我已经尝试过RelativeLayout 和LinearLayout,但没有弄清楚其中的任何一个。
我有许多视图(EditText)5-10,其中一些已启用,有些未启用。我想要的是让它们都显示出来。首先应该放在左上角,然后它们应该首先传播到右边,如果填满,然后在下一行。
有没有办法做到这一点,而无需自己编写整个布局?:-)
我已经尝试过RelativeLayout 和LinearLayout,但没有弄清楚其中的任何一个。
我有许多视图(EditText)5-10,其中一些已启用,有些未启用。我想要的是让它们都显示出来。首先应该放在左上角,然后它们应该首先传播到右边,如果填满,然后在下一行。
有没有办法做到这一点,而无需自己编写整个布局?:-)
你可以像这样 row.xml进行布局
<LinearLayout....>
<EditText1....>
<EditText2....>
</LinearLayout>
-------------------------------INFLATE ROW TO YOUR LAYOUT
LinearLayout featureLayout = (LinearLayout) View.inflate(BonusFilms.this, R.layout.row, null);
yourLayout.addView(featureLayout); // u can use this in for loop
您要查找的属性是 layout_weight,它将在 LinearLayout 中的 EditText 元素上设置。
布局权重告诉 UI 该容器中的元素应如何分配空间。更具体地说,它告诉 UI 每个元素有权使用多少空间。如果您曾经使用过 html,这就像为您的列指定百分比一样。
假设您有 2 个 EditText,并且您希望它们中的每一个都均匀地间隔线性布局,您可以这样做:
<LinearLayout...>
<EditText
android:layout_width="0dip"
android:layout_weight="1">
<EditText
android:layout_width="0dip"
android:layout_weight="1">
</Linearlayout>
注意:我不是 100% 确定为什么,但是您需要为要按权重分配的属性(在本例中为:宽度)指定 0dip。
在上述情况下,每个文本框都有权使用线性布局中可用空间的 50%。为什么?因为 LinearLayout 内所有元素的总权重为 2,每个文本框的权重为 1(参见下面的公式)
([allocation for current element] / [sum of all the weights]) * 100 = % of space allocated
(1 / 2) * 100 = 50%
如果您希望第一个文本框占 66%,第二个文本框占 33%,您可以这样做:
<LinearLayout...>
<EditText
android:layout_width="0dip"
android:layout_weight="2">
<EditText
android:layout_width="0dip"
android:layout_weight="1">
</Linearlayout>
这就是布局重量对您的帮助,但是,我不认为它有能力环绕有两个原因。1)文本框对它们的大小没有任何限制,那么它们如何知道何时达到限制并需要换行?您也许可以指定 minimumWidth 以强制它在某个点换行。
2)我不认为LinearLayout的包装。它们是无休止的一排。似乎您可能需要编写自己的自定义布局类,其中涉及对类中包含的内容以及可用的屏幕空间进行测量。
虽然我得到了一些非常好的回答,但它并没有真正回答我的问题。除了编写我自己的繁重数学布局之外,最好的解决方案是: Sherif's answer