2011-08-15 73 views
17

我有簡單的GridView(有一列和六行),顯示在單元格(我創建適配器)單元格中的TextView的ImageView。如何拉伸行以填充整個屏幕高度?現在我有以下細胞一些空間......android如何拉伸gridview中的行來填充屏幕?

main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal"> 
<LinearLayout android:layout_height="fill_parent" 
    android:layout_width="150dp" 
    android:orientation="vertical" 
    android:id="@+id/left"> 
    <include layout="@layout/menu_grid"></include> 
</LinearLayout> 
<LinearLayout android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:orientation="vertical" 
    android:id="@+id/right"> 
    <ImageView android:src="@drawable/image" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:id="@+id/imageMain" 
     android:layout_gravity="center"> 
    </ImageView> 
</LinearLayout> 

menu_grid.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="fill_parent"> 
<GridView android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:id="@+id/gridView" 
    android:padding="10dp" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:numColumns="1" 
    android:columnWidth="100dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center"></GridView> 

item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" android:layout_height="wrap_content" 
android:orientation="vertical" android:gravity="fill_horizontal"> 
<ImageView android:src="@drawable/icon" 
    android:layout_height="70dp" android:id="@+id/imageIcon" 
    android:layout_width="70dp" android:layout_gravity="center_horizontal"></ImageView> 
<TextView android:id="@+id/textIcon" android:text="TextView" 
    android:layout_gravity="center" android:layout_height="wrap_content" 
    android:layout_width="wrap_content"></TextView> 

ImageAdapter.java

public class ImageAdapter extends BaseAdapter { 
//....some code 
//.... 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view; 
    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater)_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.item, null); 

     TextView text = (TextView) view.findViewById(R.id.textIcon); 
     text.setText(labels[position]); 

     ImageView image = (ImageView) view.findViewById(R.id.imageIcon); 
     image.setImageResource(icons[position]);   

    } else { 
     view = convertView; 
    } 

    return view; 
} 

}

+0

安置自己的佈局和/或代碼。 – Brian

回答

-1

我希望我正確認識你,如果因此它是爲改變你GridViewwrap_contentfill_parent instead一樣簡單。

變化

<GridView android:layout_height="wrap_content" 

<GridView android:layout_height="fill_parent" 

如果不是這種情況,那麼它可能是你要修改的item.xml的LinearLayout佈局的高度。

+1

謝謝,但它不工作:(我只是想增加線之間的空間來填充屏幕(拉伸行,而不是列)..我會嘗試與佈局高度:) – snil

27

由於我的理解,問題是 - 如果我有6行數據在GridView需要填補的,怎樣才能讓這6行充滿整個屏幕,而不是顯示6行下一些空的空間最後一行。

要實現這一點,你必須設置gridView項目佈局的最小高度(在你的情況下它的item.xml)爲(屏幕高度)/ 6,其中6是(你必須填寫的行數) 。這個最小高度可以在您使用的適配器中設置。

要查找設備的屏幕的高度:

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 

int width = metrics.widthPixels; 
int height = metrics.heightPixels; 

在活動中找到這些價值觀,使他們的公共靜態的,適配器使用它們,我在尋找在這些價值觀出現了問題適配器類

然後設定最低高度:

view = inflater.inflate(R.layout.item, null); 
view.setMinimumHeight(GridViewActivity.height/6); 

我想看到這個帖子後,它完美地工作。

+4

作品像一個魅力...! – dd619

+0

太棒了!有效。謝啦! – Bhupinder

+0

完美的作品.... – bynu022

3

如果你只是想增加線路,您可以使用填充它應該工作之間的空間。 您可以根據您的要求通過xml或編程設置填充。

// this you can set inside your view. 
android:paddingLeft="5px" 
android:paddingRight="5px" 
android:paddingTop="10px" 
android:paddingBottom="10px" 

// this you can set to your any widgets like TextView/Layouts/Buttons etc.. 
setPadding(top, left, bottom, right);