3

我正在开发一个文本编辑器。

我有一个EditText输入文本的小部件,下面有一行带有各种格式的小部件,例如按钮和Spinners。

用户可以选择文本,然后按一个按钮来打开和关闭粗体、斜体和其他格式选项,这可以毫无问题地工作。

但是,对于Spinners,用户可以通过它选择颜色或字体等内容,在运行 Android 4.1 的华硕平板电脑或运行 4.2.2 的 Nexus 4/7/10 上,一旦Spinner点击 ,文本选择就会消失。

在三星 Galaxy SII 上,不会发生这种行为。在与Spinner. (它运行 Android 4.0.4,我不确定问题是与 Android 版本相关还是由于三星采取了不同的做法)。

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

4

1 回答 1

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

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

于 2013-03-06T09:19:46.327 回答