2013-05-02 3 views
0

GridView 자체가 중앙에 배치되어 있지만 내용이 중앙에 있지 않습니다. 다음은 화면입니다. 아래쪽과 오른쪽의 하늘색은 GridView의 배경색입니다.GridView의 내용 가운데 가운데에

enter image description here

당신은 내용이 맨 왼쪽까지 밀어 것을 볼 수 있습니다. 내 게임 보드의 내용이 정확히 GridView의 가운데에 있고, 밝은 파란색 배경색이 모든면을 동일하게 둘러 쌉니다. 도움이된다면 내 ImageAdapter 클래스

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/textFieldFU" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<GridView 
    android:id="@+id/gridview" 
    android:layout_marginTop="0dp" 
    android:layout_marginLeft="45dp" 
    android:layout_marginRight="45dp" 
    android:layout_width="fill_parent" 
    android:layout_height="485dp" 
    android:gravity="center" 
    android:horizontalSpacing="0dp" 
    android:numColumns="8" 
    android:background="@android:color/holo_blue_bright" 
    android:verticalSpacing="0dp" /> 

그리고 내 getView :

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView iv; 
    if (convertView != null) { 
     iv = (ImageView) convertView; 
    } else { 
     iv = new ImageView(context); 
     iv.setLayoutParams(new GridView.LayoutParams(60, 60)); 
     iv.setScaleType(ScaleType.FIT_CENTER); 
     iv.setPadding(0, 0, 0, 0); 
     if(position < 8 && position % 2 ==0){ 
      iv.setBackgroundColor(Color.DKGRAY); 
     } 
     else if(position > 7 && position < 16 && position % 2 ==1){ 
      iv.setBackgroundColor(Color.DKGRAY); 
     } 
     else if(position > 15 && position < 24 && position % 2 ==0){ 
      iv.setBackgroundColor(Color.DKGRAY); 
     } 
     else if(position > 23 && position < 32 && position % 2 ==1){ 
      iv.setBackgroundColor(Color.DKGRAY); 
     } 
     else if(position > 31 && position < 40 && position % 2 ==0){ 
      iv.setBackgroundColor(Color.DKGRAY); 
     } 
     else if(position > 39 && position < 48 && position % 2 ==1){ 
      iv.setBackgroundColor(Color.DKGRAY); 
     } 
     else if(position > 47 && position < 56 && position % 2 ==0){ 
      iv.setBackgroundColor(Color.DKGRAY); 
     } 
     else if(position > 55 && position < 64 && position % 2 ==1){ 
      iv.setBackgroundColor(Color.DKGRAY); 
     } 
     else 
      iv.setBackgroundColor(Color.GRAY); 
    } 
    iv.setImageResource(images[position]); 
    return iv; 
} 
+0

가능한 복제 [GridView 아래에있는 ImageView를 GridView의 크기와 정확히 일치시키는 방법?] (http://stackoverflow.com/questions/16339242/easy-way-to-make-an-imageview- 그 아래에있는 gridview-match-the-gridviews) – Raghunandan

답변

1

these options 중 하나를 사용하여보기 주위에 테두리를 만듭니다. 45dp 여백과 485dp 높이와 같은 임의의 고정 값을 피할 것입니다. 확실히 다른 화면 크기로 보이지 않을 것입니다.

또한 GridView 대신 GridLayout을 사용하는 것이 좋습니다. 기술적으로 API 레벨 14가 필요하지만 지원 라이브러리에있는 버전을 사용하여 이전 버전의 Android를 지원할 수 있습니다. getView 메서드를 재정의하는 대신 addView을 호출하여 타일을 추가해야하기 때문에 사소한 변경이되지는 않습니다.

GridLayout은 고정 된 수의 타일이 항상 표시되는 그리드 그리기에 훨씬 적합합니다. GridView는 타일을 느리게로드하기위한 내부 논리가 많은 훨씬 더 복잡한 위젯입니다. 여기서는 필요하지 않습니다. 레이아웃을보다 쉽게 ​​만들 수 있습니다.

+0

좋아, 안드로이드가 안드로이드를 설정하는 것을 제외하고 안드로이드가 내 칼럼 사이에 추가하는 것을 막을 수 없었기 때문에 45dp를 사용했다 : horizontalSpacing을 큰 음수로 설정하면 연습이 좋지 않은 것처럼 보였다. 나는 그것을 조종 한 후 높이 485dp를 제거하는 것을 잊었다. – ChrisWilson4

+0

저는 지금 일하러 가야하지만, 게으름이긴하지만 그 옵션을 시도하거나 GridLayout 제안에 당신을 데려 갈 것입니다. 나중에 답변 확인으로 돌아 가세요. – ChrisWilson4

+0

네,'GridLayout'으로 옮기는 것이 적당하다는 것을 알고 있습니다 만, 사용하기 훨씬 더 직관적 인 것으로 나타났습니다. XML에서는 'android : columnCount' 만 지정하면됩니다. 그런 다음'ImageView' 타일을 직접 XML에'GridLayout'에 자식으로 추가하거나'gridView.addView (iv, 60, 60);'와 같은 것을 호출하여 코드에 추가 할 수 있습니다. 다시 ICS 이전 장치에서 작동하게하려면 지원 라이브러리를 사용해야합니다. – oakes

0

그리드보기의 설명에이 줄을 추가 :

android:layout_centerInParent="true" 
다음

내 XML이다
+0

이전에 시도 했었지만 화면 중앙에 전체 GV가 집중됩니다. 배경색은 여전히 ​​내용의 중심을 맞추지 않고 오른쪽과 아래쪽에 나타납니다. – ChrisWilson4

+0

어쩌면 GridView를 다른 뭔가 안에 넣고 그 위에 bg 색상을 적용해야할까요? gridView를 다른 컨테이너 안에 넣는 방법을 알고 있습니까? – ChrisWilson4

관련 문제