3

私はテキストエディタに取り組んでいます。

テキストが入力されるEditTextウィジェットと、ボタンやSpinners などのさまざまな書式設定ウィジェットを含む下の行があります。

ユーザーはテキストを選択してからボタンを押して、太字、斜体、その他の書式設定オプションのオンとオフを切り替えることができ、これは問題なく機能します。

ただし、Spinnerユーザーが色やフォントなどを選択できる の場合、Android 4.1 を実行する Asus タブレットまたは 4.2.2 を実行する Nexus 4/7/10 では、Spinnerをタップするとすぐにテキストの選択が消えます。

Samsung Galaxy SII では、この動作は発生しません。選択は、 とのやり取りの間ずっと保持されSpinnerます。(Android 4.0.4 を実行しますが、問題が Android のバージョンに関連しているのか、Samsung が別のことを行っているためなのかはわかりません)。

すべてのデバイスで Samsung の動作を実現したいと考えています。これがデフォルトの動作であることを確認するにはどうすればよいですか?

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 に答える