0

我是安卓世界的新手,这个问题一直让我头疼。我有一个带有 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

如果你知道什么,请告诉我;)

4

2 回答 2

1

GridView 仅水平缩放,这意味着它将创建与您定义的一样多的列,并且仅在水平方向上具有相同的大小。

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

于 2013-08-06T04:20:17.190 回答
-1

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

但是,如果您有少量固定数量的项目可以同时显示在屏幕上,您可能需要使用TableLayoutorGridLayout代替。

于 2013-08-06T04:31:27.717 回答