- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 SwiftKey 键盘时,如果我将字符串从 EditText
传递到 SpannableStringBuilder
并将其设置回 EditText
,我会遇到奇怪的问题;末尾的任何空格字符都会被自动修剪,使用默认键盘,这不会发生在代码中:
public class MainActivity extends AppCompatActivity implements TextWatcher {
EditText txtEntry;
boolean IsChanged = false;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtEntry = (EditText) findViewById(R.id.txtEntry);
txtEntry.addTextChangedListener(this);
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (IsChanged)
return;
IsChanged = true;
SpannableStringBuilder sb = new SpannableStringBuilder();
sb.append(txtEntry.getText());
txtEntry.setText(sb);
txtEntry.setSelection(txtEntry.getText().length());
IsChanged = false;
}
}
我这样做是因为我向 EditText
添加动态情感,但无法添加空格,因此我编写了一个非常简单的代码来发现问题。
最佳答案
好的,我解决了这个问题,首先必须将 inputType="textNoSuggestions"添加到 EditText;这将防止触发 OnTextChanged 事件两次,第二次字符串的处理应该抛出 Editable;不抛出 EditText 本身
这是代码:
public class MainActivity extends AppCompatActivity implements TextWatcher{
EditText txtEntry;
boolean IsChanged = false;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtEntry = (EditText) findViewById(R.id.txtEntry);
txtEntry.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
txtEntry.addTextChangedListener(this);
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
String ss = "";
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (IsChanged)
return;
IsChanged = true;
String sInput =editable.toString().replace(" ","@space@");
SpannableStringBuilder ObjBuilder = new SpannableStringBuilder();
ObjBuilder.append(sInput);
while (true)
{
int iStartIndex = sInput.indexOf("@space@");
int iEndIndex = iStartIndex + "@space@".length();
if (iStartIndex == -1)
break;
sInput = sInput.replaceFirst("@space@","[space]");
Drawable ObjDraw = getResources().getDrawable(R.drawable.space);
ObjDraw.setBounds(0,0,10,60);
ImageSpan Image = new ImageSpan(ObjDraw);
ObjBuilder.setSpan(Image,iStartIndex,iEndIndex,0);
}
editable.clear();
editable.append( ObjBuilder);
txtEntry.setSelection(txtEntry.getText().length());
IsChanged = false;
}
}
关于java - SwiftKey 键盘和 SpannableStringBuilder 存在结尾空格字符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49479624/
使用 SwiftKey 键盘时,如果我将字符串从 EditText 传递到 SpannableStringBuilder 并将其设置回 EditText,我会遇到奇怪的问题;末尾的任何空格字符都会被自
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我在我的 Android 应用程序中使用标准的 EditText 控件。此 EditText 的输入只能从应用程序的内置键盘插入。 当 SwiftKey(第三方键盘应用程序)安装在设备上时,它会导致奇
我正在做一个简单的聊天应用程序,我想在编写消息时在 edittext 上显示笑脸。 我用它来识别哪些字符将通过 ImageSpan 由 Image 替换(仅当在 EditText 上插入笑脸字符时才会
我是一名优秀的程序员,十分优秀!