我有一个GridView
,其中包含类似平铺的按钮,其中此数字可以在某些边界内变化。我希望这个GridView
出现在屏幕底部并具有给定的高度(例如,50%)。
使用垂直LinearLayout
和权重,我可以使GridView
正好高50%,但其中的buttos更大,以便v变成可滚动区域。
我该如何避免这种情况?我希望其中的按钮能够精确缩放,使GridView
包含所有这些按钮而不滚动,这样它占据了屏幕的50%。 GridView
可能是错误的选择吗?
我暂时不会发布代码,因为这不是一个特定的问题,而是更多关于如何处理此问题的一般性问题。如果需要,我当然会发布到目前为止的内容。
编辑:我现在尝试使用TableLayout
,但单元格不会拉伸到屏幕宽度。其他线程说这是使用(正确)LayoutParams
修复的,但它对我不起作用。我的XML文件是
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="2" >
<TableRow android:id="@+id/dummy"
android:layout_weight="1" ></TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_weight="1" >
<TableLayout android:id="@+id/example_table"
android:layout_width="match_parent"
android:layout_height="match_parent" ></TableLayout>
</TableRow>
</TableLayout>
和Fragment
我在
@Override
public View onCreateView( LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState ) {
return inflater.inflate( R.layout.fragment_example, container, false );
}
@Override
public void onActivityCreated( Bundle savedInstanceState ) {
super.onActivityCreated( savedInstanceState );
TableLayout.LayoutParams rowParams = new TableLayout.LayoutParams(
TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT );
TableRow.LayoutParams cellParams = new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT );
TableLayout table = (TableLayout) getView().findViewById( R.id.example_table );
for( int rowIndex = 0; rowIndex < 10; rowIndex++ ) {
TableRow currentRow = new TableRow( getActivity() );
for( int columnIndex = 0; columnIndex < 2; columnIndex++ ) {
TextView cell = new TextView( getActivity() );
cell.setBackgroundColor( Color.GREEN );
cell.setText( "Foo" );
currentRow.addView( cell, cellParams );
}
table.addView( currentRow, rowParams );
}
}
它显示表格,但单元格尽可能窄,即它们几乎没有环绕单词。不过,我希望细胞在整个屏幕宽度上伸展。该表也在页面的中间,而不是在我希望它的底部(?)
编辑#2 :好的,没关系,我明白了。我必须在任何地方设置weight
,然后才能工作。