点击旋转器时如何不丢失文本选择?

时间:2013-03-04 22:51:26

标签: android android-edittext textview android-spinner

我正在编写文本编辑器。

我有一个EditText小部件,其中输入了文本,下面有一行,带有各种格式小部件,例如按钮和Spinner s。

用户可以选择文本然后按一个按钮来打开和关闭粗体,斜体和其他格式选项,这样可以顺利运行。

然而,对于Spinner,用户可以在运行Android 4.1的Asus平板电脑或运行4.2.2的Nexus 4/7/10上选择颜色或字体等内容,文本选择消失只要点击Spinner即可。

在三星Galaxy SII上,这种情况不会发生。在与Spinner的交互过程中保持选择。 (它运行Android 4.0.4并且我不确定问题是否与Android版本相关或由于三星采取不同的做法)。

我想在每台设备上都有三星的行为。如何确保这是默认行为?

1 个答案:

答案 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);
    }
} 

我不完全确定在某些情况下它可能不会产生一些不必要的副作用。如果你使用它并遇到任何问题,请发表评论或发布避免它们的解决方案。