gpt4 book ai didi

android - 如何创建等宽的按钮?

转载 作者:IT老高 更新时间:2023-10-28 22:03:38 24 4
gpt4 key购买 nike

我想在屏幕中间显示三个按钮,并且三个按钮的宽度相同,尽管它们的文本标签长度不同。

只需添加三个带有不同长度文本标签的按钮,就会产生不同宽度的按钮。

<?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>

默认按钮宽度包裹内容:
default button width wraps contents

--

将所有按钮的 layout_weight 设置为 1 并将 layout_width 设置为 0dip 会使它们均匀地拉伸(stretch)以填充整个屏幕宽度。对于我想要的,这样的按钮实在是太大了,尤其是在大屏幕上。

<?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 按钮填满屏幕宽度:
layout weight 1 buttons fill screen width

--

在父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小屏:
weight sum 5 small screen

权重总和5大屏:
weight sum 5 large screen

--

我也用 TableLayout 尝试了很多东西,但没有比只使用 LinearLayout 更好的了。

GridView 使用起来特别笨拙,我还没有尝试过。

那么,如何创建宽度相等的按钮,最好是它们的宽度仅与标签最长的按钮的内容相适应?

感谢任何建议。

(我确实搜索并发现这个问题被问过并回答了很多次,但我找到的答案都没有解决我想要实现的目标。)

最佳答案

Perhaps the final solution will be to simply have different layout files for different screens, but I'd rather not go down this path.

许多程序员会使用 res/layout/res/layout-large/ 来处理这样的情况。在三个按钮的有限情况下,您可能有其他选择,但通常用户界面并不那么简单。

So, how does one create buttons with equal widths, preferrably where they are only as wide as necessary to fit the contents of the button with the longest label?

要完成您的“首选”[原文如此]要求,您需要为此创建一个自定义布局类。 Here is one related to it ,对于仪表板模式,您可以将其用作起点。

关于android - 如何创建等宽的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5459168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com