我在TableLayout上使用layout_weight时遇到问题。当所有行的layout_weight
为1:
结果可接受但不完美。所以我尝试添加layout_weight
以使第一行稍微小一些,最后四行稍微大一些。但结果更令人惊讶:
这是错误的疼痛。我还试图让第一行变小,然后保持原样。这也是一个古怪的结果:
任何可以触发这种错误行为的想法?任何抬头?需要注意的任何众所周知的问题?
源代码:
XML Sources相当复杂,包含了纵向和横向,所以我更喜欢链接存储库:
工作版本:
最后,不仅仅是旧版工作版的图片。 android:layout_weight
其中:2,3,3,3,3,3,5,5,5,5
是的,我现在,从不接触工作代码。但我有内存问题( android.widget.LinearLayout和android.widget.RelativeLayout是真正的内存生成)并将一些布局更改为android.view.ViewGroups。请注意,按钮是特殊的,因为它们具有较大的点击区域,以便在尺寸较小的情况下更容易击中它们。
答案 0 :(得分:0)
感谢@Frank N. Stein我在android:layout_weight
内部获得了一些新内容,我想与您分享
1)它是一个浮点数,总和达到100%
您在互联网上找到的大部分样本都会将android:layout_weight显示为整数。但真的android.widget.LinearLayout.LayoutParams.weight是一个浮动。
然而,裸浮点数是XML解析器的表现,它们使用起来有点棘手。首先,他们没有自己的XML标记,因此您必须使用通用的<item>
标记:
<resources>
<item name='Row_Weight_0' type='fraction'>7.0</item>
<item name='Row_Weight_1' type='fraction'>9.0</item>
<item name='Row_Weight_2' type='fraction'>12.0</item>
</resources>
然后它们不是float
而是fractions
,后来必须是这样的引用:
<LinearLayout
android:layout_weight="@fraction/Row_Weight_2"
style='@style/Row'
>
因此,您可能仍希望使用整数来实现更简单的语法。但请记住,他们将缩放到%。例如,如果您将android:layout_weight
设置为{1,1,2},它们将转换为{25%,25%,50%}。
我使用了{2,3,3,3,3,3,5,5,5,5}的android:layout_weight
,其中android:layout_weightSum
的 37 。素数。不是一个好的开始,一定会给你四舍五入的问题。 @Frank N. Stein建议您选择android:layout_weight
,以便android:layout_weightSum
成为100%的倍。即10,100或1000。
2)我使用了表格布局
有人可能会认为表格布局非常适合按钮的行和列。事实证明我错了。看下面的图片。一个使用android.widget.TableLayout和android.widget.TableRow另一个普通的android.widget.LinearLayout。没有其他改变。只需%s /TableRow/LinearLayout/g
和%s /TableLayout/LinearLayout/g
这是一个显着的差异。第一次是灾难,第二次正是我想要的。所以答案是我的问题是:
当行需要缩小以适应屏幕时,android.widget.TableRow出现问题!请改用android.widget.LinearLayout。