我刚刚继承了一些android代码,我遇到的第一个错误之一是一个奇怪的EditText问题,当我按顺序键入字母'a'和'e'时,EditText会自动将它们合并到字符'æ'中。完整的xml声明如下:
<EditText
android:id="@+id/editFirstname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/profile_edittext_selector"
android:ems="10"
android:inputType="textCapSentences"
android:paddingBottom="6dp"
android:paddingLeft="15dp"
android:paddingRight="5dp"
android:paddingTop="5dp"
android:textColor="#666666"
android:textColorHint="#666666"
android:textSize="12sp" >
</EditText>
我使用xml搜索了相关的Activity和Fragment,但是我没有找到任何可以归咎的东西 - 没有TextWatcher,也没有任何例程试图修改EditText中的输入或charsequence。输入语言为“使用默认值”(设置为英语 - 美国)。
奇怪的是,iOS版本的应用程序中存在相同的错误(不同的开发人员,也不知道为什么会发生这种情况)。
有没有人遇到过这个?
编辑: 可提交的声明,如要求:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">\
<item android:drawable="@drawable/bgd_form_selected" android:state_pressed="true"/>
<item android:drawable="@drawable/bgd_form_selected" android:state_focused="true"/>
<item android:drawable="@drawable/bgd_form"/>
</selector>
EDIT2:
其他信息: - 适用于所有测试设备:gs2,gs3,xperia z,nexus 4,galaxy ace
如上所述:iOS上提交的相同错误
重要:服务器在提交值时收到正确的输入(例如“ae”未转换)(这可能会缩小到显示问题)
答案 0 :(得分:4)
我只知道ios,没有安装机器人,对不起...... 但是你在这里看到的文本的属性叫做'ligature'
来自维基百科
在写作和排版中,印刷结扎发生在两个或两个或两个 更多的字形或字母作为单个字形连接在一起。连字 通常替换共享通用组件的连续字符 是一类更普遍的字形的一部分,称为“上下文形式”, 字母的具体形状取决于上下文,例如 周围的字母或靠近一条线的末端。
您可能会尝试使用没有连接字形的字体,或者可能有一个属性可以翻转以关闭相关文本视图的连字。有趣的是
也是维基百科..
字符Æ - 小写æ(在古代称为æsc)使用时 丹麦语,挪威语或冰岛语,或古英语,是 不是印刷结扎。这是一个独特的字母 - 一个元音 - 何时 字母顺序,按字母顺序给出不同的位置。在 现代英语拼写Æ不被视为独立的字母 但是拼写变体,例如:“encyclopædia”与 “百科全书”或“百科全书”。 Æ来自MediævalLatin,在那里 在某些词中,它是可选的连字词,例如“Æneas”。它是 仍被发现是英语和法语的变体,但趋势是 最近一直在分别打印A和E. [8]同样,Œ 和 - 虽然通常用法语打印成连字,但是错误的 如果技术限制要求,则用组件字母替换。
虽然这个特定的元素在某种程度上不是连字而是新的元音,但它仍然通常在连字设置中被发现和管理,例如在iOs中的NSAttributedString中,你将使用连字属性(enum的实际名称)来影响它。现在回想一下,NSAttributedString有点乱,因为它使用不同的属性名称,这取决于你是否在UIKit或CoreText中使用它。)祝你好运,看看关于连字的android文本文档
答案 1 :(得分:4)
您写道:
奇怪的是,在iOS版本中提交了同样的错误 应用程序(不同的开发人员,也不知道为什么会发生这种情况)。
所以我想知道你是否在应用的资产中添加了buggy version of the font Roboto。它包含一个错误的连字规则,它将“ae”改为“æ”:
<Lookup index="1"> <LookupType value="4"/> <LookupFlag value="0"/> <!-- SubTableCount=1 --> <LigatureSubst index="0" Format="1"> <LigatureSet glyph="a"> <Ligature components="e" glyph="ae"/> </LigatureSet> <LigatureSet glyph="f"> <Ligature components="i" glyph="fi"/> </LigatureSet> </LigatureSubst> </Lookup>
它已经修复,因此您可以通过更新应用资产中的Roboto字体来解决问题。