我有一个带有限制字符的EditText。我只允许数字为
Galaxy S4出现了一件奇怪的事情。它没有出现HTC Desire HD,HTC Desire X和ZTE Blade。
dddsss
å
。dddsss
u
dddsssdddsssu
t
,内容变为dddsssdddsssudddsssut
当我按下退格键时,有时会发生这种情况,因此必须按下按钮问题。
我添加了android:inputType="textNoSuggestions"
,但没有帮助。
<EditText
android:id="@+id/comment_et"
android:layout_width="0dp"
android:layout_height="45dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:background="@drawable/idea_edittext"
android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ,0,1,2,3,4,5,6,7,8,9,*,!,@,#,$,%,^,(,),_,+,-,[,],{,},:,;,',|,\,.,/,ß,?,~,="
android:inputType="textCapSentences|textNoSuggestions"
android:textSize="16dp" />
有没有人经历过这个?
答案 0 :(得分:1)
我遇到了同样的问题,并将EditText的inputtype更改为:
android:inputType="text|textNoSuggestions"
我不知道这是否是一个合适的解决方案,但对我来说没问题。
答案 1 :(得分:0)
就个人而言,将EditText的inputtype更改为:
android:inputType="text|textNoSuggestions"
没用。但我注意到按下后退键时不再发生内容复制。我知道这可能不是解决问题的正确方法,但是等待一个真正的解决方案,如果它可以帮助一些人,我在EditText上做了一个小技巧来解决问题:
private string formerText = null;
private bool isEditLocked = false;
editText.TextChanged += (sender, e) =>
{
if (!isEditLocked)
{
var currentSelection = editText.SelectionStart;
isEditLocked = true;
if (formerText != null && editText.Text == formerText)
{
if (editText.Text.Length == 0)
{
editText.Text = "";
}
else
{
var lastChar = editText.Text[editText.Text.Length - 1];
editText.Text = editText.Text.Remove(editText.Text.Length - 1);
editText.Text += lastChar;
}
}
formerText = editText.Text;
editText.SetSelection(currentSelection);
isEditLocked = false;
}
};
正如您所看到的,我只是以编程方式删除了EditText的最后一个字符,然后再次添加它,然后复制问题就消失了。
请注意,这是Xamarin.Android代码,因此编写的是C#,但您应该能够很容易地将其转换为Java(editText.Text = ...成为editText.setText(...)等等上)。
如果有人找到这个问题的真正解决方案,请将其发布在那里,因为它仍然会在2017年9月发生