如何使用 android:maxWidth?
Posted
技术标签:
【中文标题】如何使用 android:maxWidth?【英文标题】:How to use android:maxWidth? 【发布时间】:2012-11-24 22:44:28 【问题描述】:我想设置编辑框的最大宽度。所以我创建了这个小布局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:maxWidth="150dp" >
<EditText
android:layout_
android:layout_
android:ems="10" />
</LinearLayout>
但它不起作用,盒子无论如何可能超过 150 dp。 android:maxWidth="150dp"
中的 EditText
将给出相同的结果。我已阅读 (maxWidth doesn't work with fill_parent) 将最大和最小宽度设置为相同大小应该可以解决它:
<EditText
android:layout_
android:layout_
android:ems="10"
android:maxWidth="50dp"
android:minWidth="50dp" />
但事实并非如此。
我在这里找到了解决问题的方法:
Setting a maximum width on a ViewGroup
这很好用。但我想maxWidth
属性在这里是出于我的原因。应该如何使用?或者有这方面的任何文件吗?我在这个问题上花了几个小时,仍然不明白如何使用这个简单的属性。
【问题讨论】:
提示:android:width
是设置android:maxWidth
和android:minWidth
的快捷方式
【参考方案1】:
我想设置编辑框的最大宽度。
在你的例子中:
<EditText
android:layout_
android:layout_
android:ems="10" />
layout_width
和 ems
属性试图设置相同的值。 Android 似乎选择了较大的fill_parent
值而忽略了另一个。当你使用这个时:
<EditText
android:layout_
android:layout_
android:ems="10"
android:maxWidth="50dp"
android:minWidth="50dp" />
这里ems
和maxWidth
试图设置相同的值,再次使用更大的值。因此,根据您的实际需要,您可以使用:
<EditText
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:ems="10" />
如果您更喜欢使用 dp,请将 android:ems="10"
替换为 android:maxWidth="50dp"
。
最后,您的 LinearLayout 只有一个子元素 EditText。通常,发生这种情况时,您可以删除 LinearLayout 标签并单独使用 EditText。
【讨论】:
谢谢,这或多或少是预期的 :-)。但它没有:-(。如果我将我的 LinearLayout 标签更改为你的标签,我仍然会在编辑框上获得宽度,无论我在 maxWidth 属性上放置哪个值:-(。我真的很困惑。 我看错了你的问题,所以我重新回答了。您使用的设备有多大? 坦率地说,我不知道 ems 属性是干什么用的,我希望在我问问题之前检查一下 :-)。为了解决我的问题,我应该:删除 ems-tag,将 android:layout_width 设置为“wrap_content”,并将 minWidth 和 maxWidth 设置为最大宽度。这就提出了另一个问题:minWidth 的目的是什么?如果我没有为 minWidth 设置值,maxWidth 属性似乎被忽略了。如果我将一个小于 maxWidth 的值设置为 minWidth,则使用 minWidth。我的问题解决了,我有点聪明了,但对所有这些属性还是有点困惑:-)。 从我看到的minWidth
和layout_width="wrap_content"
(和ems
)都设置了基本值,它类似于maxWidth
,但Android选择最小的 其中的价值。这就是为什么如果您设置 layout_width="wrap_content"
、maxWidth="500dp"
和 minWidth="500dp"
布局将是 500dp 宽,除非屏幕小于 500dp。【参考方案2】:
对于近年来看到这个问题的人,我们现在有app:layout_constraintWidth_max="225dp"
。将您的布局放在约束布局中,并在您想要最大宽度的视图上使用它。
【讨论】:
以上是关于如何使用 android:maxWidth?的主要内容,如果未能解决你的问题,请参考以下文章