【发布时间】:2014-08-13 20:14:59
【问题描述】:
如何在LinearLayout 内为所有元素提供固定宽度?想象一下,我有一个按钮列表,我会将它们全部居中,并根据具有最大宽度的元素给它们相同的宽度,有什么办法吗?让布局管理器动态地执行此操作(我的意思是不要为每个按钮重复代码)?我的代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<Button android:id="@+id/mainStageButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:onClick="menuClickListener"
android:text="@string/mainStage"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:onClick="menuClickListener"
android:text="@string/amphiteatre"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:onClick="menuClickListener"
android:text="@string/aula" />
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:onClick="menuClickListener"
android:text="@string/mensa"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:onClick="menuClickListener"
android:text="@string/sportsSchedule"/>
【问题讨论】:
-
听起来不错,但我想问是否有办法在 LayoutManager 标记中设置它(你知道,DRY 原则 :))
-
我将移除我的 cmets,因为它们无济于事。我很快就会添加另一个。
-
谢谢,我也编辑了我的问题,也许我没有说清楚:)
-
我相信您当前的设置无法修改以产生所需的结果。这是我的建议:您的父容器将是
FrameLayout- {width:match, height:match}。在FrameLayout内,放置一个LinearLayout- {width:wrap, height:**,orientation:vertical, layout_gravity:center_horizontal}。将您的Buttons放在此LinearLayout中,但将其width属性更改为match_parent并删除layout_gravity属性。 -
很好,真的很管用!将您的评论放入答案中,以便我可以正确地为您投票:)
标签: java android android-layout