在下面的示例中,我尝试为GridLayout强制使用固定的列宽,其中列的宽度由设备宽度驱动。它有效,但我不确定是否有更好的方法或我错过了任何副作用。
GridLayout的:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/twopane"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:columnCount="8" >
<TextView android:id="@+id/grid_id_col1" android:text="col1"/>
<TextView android:id="@+id/grid_id_col2" android:text="col2" />
<TextView android:id="@+id/grid_id_col3" android:text="col3" />
<TextView android:id="@+id/grid_id_col4" android:text="col4" />
<TextView android:id="@+id/grid_id_col5" android:text="col5" />
<TextView android:id="@+id/grid_id_col6" android:text="col6" />
<TextView android:id="@+id/grid_id_col7" android:text="col7" />
<TextView android:id="@+id/grid_id_col8" android:text="col8" />
<!-- for ease of discussion I left out the actual UI layout -->
</GridLayout>
在活动中计算宽度:
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
Integer colWidth = (int) (dpWidth / 8);
然后设置列大小:
TextView colTv = (TextView) findViewById(R.id.grid_id_col1);
colTv.setWidth( colWidth );
colTv.setVisibility(View.INVISIBLE);
等其他专栏。使用这种方法,我可以对网格结构进行一些控制,并且对于不同的设备也是如此。取向。
谢谢, 麦克