如何将gridview分割成填满屏幕的相等部分

时间:2013-08-06 04:06:15

标签: android android-layout android-gridview

我是Android世界的新手,这个问题让我很头疼。 我有一个带有4个按钮的gridview,我想将屏幕分成4个相等的高度和宽度按钮。 (不分配自定义dp)。我试过使用layout_weight但它对我没用:/ 这是我的代码的一些例子。 这是我使用gridview

的课程
public class DietAdminPanel extends Activity {

private Button mydiets_button;
private ArrayList<String> data;
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.gridview_layout);
    data = new ArrayList<String>();
    data.add("Test1");
    data.add("Test2");
    data.add("Test3");
    data.add("Test4");
    Log.d("On create", "success");
    GridView gridview = (GridView)findViewById(R.id.gridview);
    gridview.setAdapter(new GridViewAdapter(this, data));

gridview_layout.xml

 <?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:columnWidth="30dp"
    android:numColumns="2"
     android:verticalSpacing="0dp"
     android:horizontalSpacing="0dp"
     android:stretchMode="columnWidth"
     android:fillViewport="true"

     >

</GridView>

和gridview_item_layout.xml(用于自定义适配器)

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView android:id="@+id/gridview_textview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="test"/>
</LinearLayout>

这是它实际上的样子

http://i.stack.imgur.com/Iah2y.jpg

这就是我希望我的gridview看起来像的样子(我在dp中使用了宽度,而不是这样 我想要的是:/)

http://i.stack.imgur.com/xHgkj.jpg

如果你有所了解请告诉我;)

2 个答案:

答案 0 :(得分:1)

GridView仅水平缩放,这意味着它将创建与您定义的只有水平相同大小的列。

每个单元格的高度取决于其中的视图

答案 1 :(得分:-1)

GridView用于显示不能同时显示的多个项目,因此它们会滚动到视图中。您仍然可以使用android:verticalSpacing="50dp"设置项目之间的垂直空间。

但是,如果您有一小部分固定数量的项目可以同时在屏幕上显示,您可能需要使用TableLayoutGridLayout