我有GridView
这样的main.xml
):
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="100dp"
android:gravity="center"
android:numColumns="2"
android:stretchMode="columnWidth"
android:background="@color/black"
android:horizontalSpacing="5dp"
android:verticalSpacing="5dp" >
</GridView>
和GridView
这样的项目(grid.xml
):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridItemLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:gravity="center"
android:background="@color/white" >
<ImageView
android:id="@+id/grid_item_image"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginRight="10dp"
android:src="@drawable/person" >
</ImageView>
<TextView
android:id="@+id/grid_item_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/grid_item_image"
android:text="@+id/label"
android:layout_alignLeft="@id/grid_item_image"
android:layout_alignRight="@id/grid_item_image"
android:layout_marginTop="5dp"
android:textSize="15dp"
android:gravity="center"
android:textColor="@color/black" >
</TextView>
</RelativeLayout>
由于GridView
中只有2行项目,我希望这两行完全填满屏幕,不留任何空白空间或超出屏幕高度,这需要滚动才能完全看到。为此,我做了这个(GridViewActivity.java
):
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
width = metrics.widthPixels;
height = metrics.heightPixels;
并在我的适配器(ImageAdapter.java
)中:
gridView = new View(context);
gridView = inflater.inflate(R.layout.grid, null);
gridView.setMinimumHeight(GridViewActivity.height/2);
gridView.setMinimumWidth(GridViewActivity.width/2);
这不符合我的要求:
你可以看到第二行不完全可见
任何人都可以帮助我如何使这两行完全适合屏幕,或者如何在调用活动时使GridView
显示其中心,就像这样:
答案 0 :(得分:2)
首先,如果您的GridView
只有2行2列并且您不打算添加更多项目,那么为什么不使用简单的RelativeLayout
(和{ {1}}每个单元格)将这些项目放在网格中(或者你可以使用FrameLayout
2行)?正确定位它们会更容易,性能也会相同。
如果您仍想使用TableLayout
,那么您必须找到屏幕的尺寸(就像您已经做过的那样)从行之间的空格,标题栏高度和通知栏高度中减去然后将其划分为2行。然后,您将使用之前计算的此大小将其设置为适配器的GridView
方法中膨胀项目布局的LayoutParams
的高度(不要忘记宽度)。
我的建议是使用另一种布局,然后使用getView
。下面的示例(您可以使用GridView
将其缩小)
include