首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么能影响android:ems大小?

什么能影响android:ems大小?
EN

Stack Overflow用户
提问于 2016-11-30 15:34:54
回答 1查看 2.9K关注 0票数 0

我有一个简单的EditText和layout_width="wrap_content"。属性中没有填充或边距。下面是一个完整的例子:

代码语言:javascript
复制
    <EditText
        android:id="@+id/maskPrefix"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="3"
        android:inputType="text|textCapCharacters|textNoSuggestions"
        android:maxLength="5"
        android:maxLines="1"
        android:nextFocusDown="@+id/maskNum"
        android:text="GA"
        android:textSize="18sp"
        tools:ignore="LabelFor" />

一切都很好但是..。但是:

  1. 当我将ems设置为1时,它大约有1个字符宽;
  2. 当我将ems设置为2,大约2.5字符宽;
  3. 当我把ems设置为3,它大约是4.5字符宽;
  4. 当我将ems设置为4时,它大约有6个字符宽;
  5. 当我将ems设置为5时,它大约有10个字符宽;
  6. 当我将ems设置为10时,它大约有20个字符宽;

如果我删除android:ems并通过android:maxLength设置最大宽度,那么一切都是适当的宽度。但我需要这两种特质。

为什么我的EditText宽度错了?这个神秘的乘法器是怎么回事?我使用Theme.AppCompat.Light.NoActionBar,最新的android (2.2.2),并使用

代码语言:javascript
复制
compile "com.android.support:support-v4:25.0.1"
compile 'com.android.support:appcompat-v7:25.0.1'

在Nexus 5中用Android 6进行测试。

有什么选项或属性会使android:ems如此糟糕?

UPD.链接到this question不会以任何方式解决我的问题。另外,同时设置android:textSizeandroid:ems是绝对正确的。我希望我的文本中的字母是x sp大,我希望我的EditTexty chars宽。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-01 14:54:31

好吧,我找到凶手了。我认为ems大小x对于所有字符都是相同的。但我完全忘记了,我们有单空格和比例字体。当我们将ems设置为x时,它将是x*y,其中y是最宽的字母(通常是M)的宽度。但其他字母的宽度会更小。在这张图片上可以清楚地看到:

"M“字母比"1”宽得多!

解决方案:我们可以简单地切换到单空间字体,比如serif-monospace

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40892270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档