Android - 如何使TableLayout按钮适合不同大小的屏幕

时间:2013-11-14 21:31:03

标签: android

我正在使用片段开发Android应用。在两个片段中,我使用TableLayout以编程方式创建一个由按钮组成的矩阵视图。对于应用程序的不同运行,矩阵的维度不同,但通常我有10-15行和10-15列。

我有OddsButton扩展按钮。

我想让这个视图填满不同设备的屏幕,但我无法理解什么是正确的方法。我可以(通过硬编码宽度和高度的值)影响按钮的高度和宽度(参见下面的代码),但我仍在努力将其安装到Nexus 7上。如果我首先找到合适的高度以使其适合屏幕,那么当我开始添加更多宽度时,按钮也会变得更高,并且我无法将其调整回来。

很抱歉,如果这个问题很奇怪,但我希望有人能理解这一点。我意识到我可能正在尝试完全错误的方法。

    for (int k=1;k<=n2;k=k+1){
        OddsButton b = new OddsButton(this.getActivity());

        b.setLeg1(no);
        b.setLeg2(k);
        b.setO(this.getO(no,k));
        b.setIndex(this.IndexForCombination(no, k));
        b.setMinimumHeight(height);
        b.setHeight(height);
        b.setMinimumWidth(width);
        b.setMinimumHeight(width);
        b.setPadding(0, 0, 0, 0);

1 个答案:

答案 0 :(得分:0)

表格布局有点棘手。请看一下示例:

<TableLayout
    android:id="@+id/myId"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="*"
    android:weightSum="2"
    >
        <TableRow >
        <TextView 
            android:id="@+id/text1"
            android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
            android:text="bla1"
            /> 
        <TextView 
            android:id="@+id/text2"
            android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
            android:text="bla2"
            /> 
    </TableRow>
     </TableLayout

什么是棘手的是首先设置android:stretchColumns =“*”用于布局(意味着拉伸所有列)和下一个android:layout_width =“0dp”android:layout_height =“wrap_content”android:layout_weight =“1”(don不要问我为什么会这样恶劣,我永远不会理解Android中的一些棘手的事情,但他们的工作很好。顺便说一句,weightSum只是你想要在一行中拥有的元素的权重之和。

当然你可以有更多的表格,每个表格中的元素数量应该是相同的。

(如果你喜欢这个答案,请不要忘记给予分数;))。