2014-12-08 8 views
6

Merhaba Bazı elementlerle basit gridview görüntülemek istediğim küçük android uygulamaları geliştiriyorum. Tek sorun, alan olmasına rağmen her zaman sadece iki sütun göstermesidir. Ekranı eşit olarak bölen ekran 2 sütuna ve sadece iki elemanı görüntülüyor. Eğer sütun sayısını sayı olarak belirlediysem, auto_fit değil, doğru gösteriliyor. Kodum benziyor:10 Android gridview android: numColumns = "auto_fit" her zaman sadece iki sütun oluştur

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
> 
<GridView 
    android:id="@+id/gridView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_margin="5dp" 
    android:numColumns="auto_fit" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp"> 
</GridView> 
</FrameLayout> 

ve benim ızgara elemanı gibi görünür:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
tools:context="com.example.androidcardlayout.MainActivity" > 

<android.support.v7.widget.CardView 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/card_view" 
    android:layout_width="100dp" 
    android:layout_height="150dp" 
    card_view:cardCornerRadius="4dp"> 

    <RelativeLayout 
     android:id="@+id/cardMianRlt" 
     android:layout_width="100dp" 
     android:layout_height="150dp" 
     > 
    </RelativeLayout> 

Yanlış bir şey yapıyorum? Yardıma ihtiyacım var. Teşekkür ederim.

cevap

9

Otomatik sığdırma ayarı yalnızca sabit sütun genişlikleri varsa geçerlidir. İşte otomatik sığdırma ayarını kullanır GridView kaynak kodunda tek yerdir:

private boolean determineColumns(int availableSpace) { 
    final int requestedHorizontalSpacing = mRequestedHorizontalSpacing; 
    final int stretchMode = mStretchMode; 
    final int requestedColumnWidth = mRequestedColumnWidth; 
    boolean didNotInitiallyFit = false; 

    if (mRequestedNumColumns == AUTO_FIT) { 
     if (requestedColumnWidth > 0) { 
      // Client told us to pick the number of columns 
      mNumColumns = (availableSpace + requestedHorizontalSpacing)/
        (requestedColumnWidth + requestedHorizontalSpacing); 
     } else { 
      // Just make up a number if we don't have enough info 
      mNumColumns = 2; 
     } 
    } 

Bu özel fonksiyon tedbir/düzen işlemi sırasında denir. Otomatik uyuşma if ifadesi içinde, requestedColumnWidth > 0 değilse, yalnızca gördüğünüz şey olan 2 sütun elde edersiniz.

sabit genişlikli uygulamanız için çalışırsa

, o zaman bu gibi XML koymak gerekir:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 
    <GridView 
     android:id="@+id/gridView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_margin="5dp" 
     android:numColumns="auto_fit" 
     android:columnWidth="30dp" 
     android:verticalSpacing="10dp" 
     android:horizontalSpacing="10dp"> 
    </GridView> 
</FrameLayout> 
+0

Tamam noktası ve onun çalışma var. Teşekkür ederim. – nilkash

+0

, nasıl ayarlayacağınızı paylaşabilirsiniz? – Erum