2014-04-18 3 views
0

간단한 GridView가 있습니다. 다음은 XML입니다Gridview 열의 자동 간격은?

 <LinearLayout 
     android:id="@+id/calendar_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="@dimen/activity_horizontal_margin" 
     android:layout_marginRight="@dimen/activity_horizontal_margin" 
     android:orientation="vertical" > 

     <GridView 
      android:id="@+id/grid_view" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:numColumns="7" 
      android:verticalSpacing="2dp" 
      android:rotationY="180" > 
     </GridView> 
    </LinearLayout> 

저는 TextView를 만들고 gridview에 항목으로 삽입합니다. 기본적으로 사용자 정의 된 캘린더를 만드는 것이 아이디어입니다. 어댑터에서

나는

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    TextView textView = new TextView(mContext); 
    textView.setText(days.get(position).toString()); 
    textView.setRotationY(180); 
    textView.setGravity(Gravity.CENTER); 

    textView.setBackground(mContext.getResources().getDrawable(R.drawable.grey_box)); 

    int x = mContext.getResources().getDimensionPixelSize(R.dimen.calendar_slot); 
    textView.setLayoutParams(new GridView.LayoutParams(x, x)); 
    return textView; 
} 

R.dimen.calendar_slot는 30dp하는 동일합니다.

왜 내가 이해하지 못하는 것은, 위의 주어진 gridview가 아래처럼 보이는 이유입니까? . 함께 병합 할 열이 필요합니다. 그러나 그들 사이에 공간이 있습니다.

누구든지 도움을 줄 수 있습니까? Screenshot

답변

1

있는 gridview의 열 사이에 많은 공간이있는 이유는 당신이, 레이아웃의 텍스트 뷰가이 문제를 방지하려면 그리드보기

에서 제공하는 완전한 열 공간을 점유되지 않는 것입니다 장치의 화면 너비와 높이를 계산하고이를 열과 행의 수로 각각 나눕니다. 이렇게하면 단일 텍스트 뷰에 필요한 너비와 높이가 정확하게 표시됩니다. 텍스트 뷰의 크기로 설정하십시오. 당신은 당신의 행과 열을

사이에 동일한 공간을 얻을 것이다

DisplayMetrics displayMetrics=getResources().getDisplayMetrics(); 
    screen_width=displayMetrics.widthPixels; //width of the device screen 
    screen_height=displayMetrics.heightPixels; //height of device screen 

    int view_width=screen_width/columns; //width for text view 
    int view_height=screen_height/rows; //height for text view 

    textview.getgetLayoutParams().width=view_width; 
    textview.getgetLayoutParams().height=view_height; 
을 다음과 같이 코드가 될 것입니다