【发布时间】:2011-07-24 11:16:05
【问题描述】:
我想在屏幕中间显示三个按钮,并且三个按钮的宽度相同,尽管它们的文本标签长度不同。
只需添加三个带有不同长度文本标签的按钮,就会产生不同宽度的按钮。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center">
<Button
android:id="@+id/button_1"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:text="ABCDEF" />
<Button
android:id="@+id/button_2"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:text="GHI" />
<Button
android:id="@+id/button_3"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:text="JKLM" />
</LinearLayout>
默认按钮宽度环绕内容:
--
将所有按钮的 layout_weight 设置为 1 并将 layout_width 设置为 0dip 会使它们均匀地拉伸以填充整个屏幕宽度。对于我想要的,这样的按钮实在是太大了,尤其是在大屏幕上。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center">
<Button
android:id="@+id/button_1"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:text="ABCDEF" />
<Button
android:id="@+id/button_2"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:text="GHI" />
<Button
android:id="@+id/button_3"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:text="JKLM" />
</LinearLayout>
布局权重 1 按钮填充屏幕宽度:
--
在父LinearLayout中为weightSum设置不同的值可以用来阻止按钮填满整个屏幕,但是我不认为这是我要走的路,因为我不想让按钮占据大屏幕设备上的大部分屏幕。澄清一下,使用 weightSum,例如,我可以将三个按钮设置为共同占据屏幕宽度的一半,这在小屏幕上看起来还可以,但在大屏幕上,按钮仍然会占据屏幕宽度的一半,并且按钮只会比我想要的大得多。也许最终的解决方案是简单地为不同的屏幕设置不同的布局文件,但我宁愿不走这条路。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center"
android:weightSum="5">
<Button
android:id="@+id/button_1"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:text="ABCDEF" />
<Button
android:id="@+id/button_2"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:text="GHI" />
<Button
android:id="@+id/button_3"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:text="JKLM" />
</LinearLayout>
权重总和5小屏:
权重总和5大屏:
--
我也用 TableLayout 尝试了很多东西,但没有比只使用 LinearLayout 更好的了。
GridView 使用起来特别笨拙,我还没有尝试过。
那么,如何创建宽度相等的按钮,最好是它们的宽度仅与标签最长的按钮的内容相适应?
感谢任何建议。
(我确实搜索并发现这个问题被问和回答了很多次,但我找到的答案都没有解决我想要实现的目标。)
【问题讨论】:
-
写一个自定义布局怎么样?
标签: android user-interface button android-layout