在Android应用中,我将信用卡条目作为四个EditText字段。这些字段配置为使用等宽字体。
当我输入数字时,每个4字符块的宽度始终与预期的相同。
但是,为了屏蔽已经输入的信用卡详细信息,我使用了一个unicode黑色圆圈字符"●"。事实证明,即使使用等宽字体,宽度为"●●●●"比#11; 1111"更宽!当我试图支持不同的系统字体大小和屏幕尺寸时,这会给我带来问题。
有趣的是,在带有Marshmallow的Nexus 5或KitKat上的三星手机上,我都没有看到这个问题!
我是否遗漏了某些内容,或者Lollipop上的默认Android monospace字体实际上是不是等宽字体?
我的XML:
<LinearLayout
android:id="@+id/card_number_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
<EditText
android:id="@+id/card_field_1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:hint="●●●●"
android:typeface="monospace"
android:inputType="number"
android:focusable="true"
android:maxLength="4">
</EditText>
...
</LinearLayout>
答案 0 :(得分:4)
在我的Marshmallow构建中,这些图形字符来自NotoSansSymbols-Regular-Subsetted.ttf,它们绝对不是等宽的。谷歌搞砸了。隐藏该文件并使用Kitkat的DroidSansFallback.ttf让我排队等待。
提交了错误报告