我试图在另一个LinearLayout中水平排列3个LinearLayouts(基本上形成三列),其中中间布局的宽度可以根据它的内容而变化。
所有列都应始终可见,从左侧填充视口。左侧和右侧列将分配最大宽度。所以只有中间布局的大小不同。如果所有列的总宽度超出视口大小,则中间列不得重叠或推出其他列。但相反它应该使用剩余的空间。
我尝试使用布局权重,但这会使右列总是在右侧,而中间列会填满所有空间,即使它的内容不需要。
当我尝试将RelativeLayout用作容器时,我最终会将所有三列相互重叠或第一列消失。
我认为下面的代码(现在只有原理图,因为我无法访问代码atm)应该可以工作,但如上所述,第一个LinearLayout没有出现。最后的LinearLayout似乎已根据需要就位。
<RelativeLayout>
<LinearLayout
android:layout_alignParentStart>
</LinearLayout>
<LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_alignParentEnd>
</LinearLayout>
</RelativeLayout>
有谁知道如何解决这个问题?如果您需要更详细的代码示例等,请告诉我。我会尽快提供。
我发现了一些关于这个或类似主题的其他问题,但解决方案总是使用布局权重或类似上面的代码片段。到目前为止,我对这些方法没有好运,也许是因为这些问题的用例略有不同或几年之后,因此api在平均时间内发生了变化。
非常感谢任何指针: - )
答案 0 :(得分:0)
是。您希望使用layout_width="0dp"
和layout_weight="1"
定义中心列。左列和右列将为layout_width="wrap_content"
。
LinearLayout
应包含3个内部“列”LinearLayout
s。
答案 1 :(得分:0)
我终于找到了一个有效的解决方案。
仅使用Jeffrey Blattman所描述的layout_weight只有在视图变得足够大以填满屏幕时才会起作用。
但是只要视图只填充一部分,你就会在它们之间产生间隙,因为中间视图会填满剩下的空间。在这种情况下,我想避免这种情况。
由于某些其他原因,我不得不将我的布局放入片段中。现在,当我将片段的尺寸设置为wrap_content时,行为完全符合我的要求。所以这些视图在它们很小的时候不会被炸毁,但它们的布局就好像没有定义layout_weight一样。但是当增大时,边缘视图仍然在屏幕内。