什么会影响android:ems大小?

什么会影响android:ems大小?,android,Android,我有一个简单的编辑文本,带有layout\u width=“wrap\u content”。属性中没有填充或边距。以下是一个完整的示例: <EditText android:id="@+id/maskPrefix" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="3" androi

我有一个简单的编辑文本,带有
layout\u width=“wrap\u content”
。属性中没有填充或边距。以下是一个完整的示例:

    <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" />
在Nexus5中使用Android 6进行测试

什么选项或属性会让android:ems变得如此糟糕


UPD。链接到并不能以任何方式解决我的问题。另外,设置
android:textSize
android:ems
是绝对正确的。我希望我文本的字母是xsp大,我希望我的
EditText
y字符宽。

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

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

解决方案:我们可以简单地切换到单空格字体,如
衬线单空格


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

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

解决方案:我们可以简单地切换到单空格字体,如
衬线单空格


您正在设置
文本大小
ems
。检查这个@Chisko是的,我设置了两个,因为我需要两个。而你的链接没有任何解释是非常无用的。似乎你认为这些价值观是为了同样的目的。然后再次检查您自己的链接;)您正在设置
text\u size
ems
。检查这个@Chisko是的,我设置了两个,因为我需要两个。而你的链接没有任何解释是非常无用的。似乎你认为这些价值观是为了同样的目的。然后再次检查您自己的链接;)
compile "com.android.support:support-v4:25.0.1"
compile 'com.android.support:appcompat-v7:25.0.1'