GridView的垂直高度恰好为50%

时间:2013-07-28 15:24:55

标签: java android gridview

我有一个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,然后才能工作。

0 个答案:

没有答案