我正在编写文本编辑器。
我有一个EditText
小部件,其中输入了文本,下面有一行,带有各种格式小部件,例如按钮和Spinner
s。
用户可以选择文本然后按一个按钮来打开和关闭粗体,斜体和其他格式选项,这样可以顺利运行。
然而,对于Spinner
,用户可以在运行Android 4.1的Asus平板电脑或运行4.2.2的Nexus 4/7/10上选择颜色或字体等内容,文本选择消失只要点击Spinner
即可。
在三星Galaxy SII上,这种情况不会发生。在与Spinner
的交互过程中保持选择。 (它运行Android 4.0.4并且我不确定问题是否与Android版本相关或由于三星采取不同的做法)。
我想在每台设备上都有三星的行为。如何确保这是默认行为?
答案 0 :(得分:3)
使用以下覆盖创建自定义EditText类可以解决问题:
@Override
public void onWindowFocusChanged (boolean hasWindowFocus) {
boolean hadSelection = this.hasSelection();
int start=0, end=0;
if(hadSelection) {
start = getSelectionStart();
end = getSelectionEnd();
}
super.onWindowFocusChanged(hasWindowFocus);
if(hadSelection) {
setSelection(start, end);
}
}
我不完全确定在某些情况下它可能不会产生一些不必要的副作用。如果你使用它并遇到任何问题,请发表评论或发布避免它们的解决方案。