3

私はテキストフィールドでバックスペースを行い、カーソル位置の前に残っている構成テキストの単語またはその一部として設定する必要があります。バックスペースを押すたびに、そのことをしなければなりません。したがって、私のステップは次のようになります。

  • 最後の単語 (またはその一部) のサイズを取得します。
  • 構成テキストとして作成します。

私はこのようにしてみます:

ic.setSelection(startWordPosition, word.length());
ic.setComposingText(word, 1);

「aa」のような文字列でバックスペースをテストしていませんが、すべてうまくいきます。3文字すべてを選択しますが、設定すると、ドットの後の部分のみを置き換えます。

次に、次のようにします。

ic.deleteSurroundingText(word.length(),0);
ic.setComposingText(word, 1);

しかし、それは正しく機能せず、私の単語の前にあるテキストを削除することがあります(おそらく現在作成されているためです)。


正しいように見えるもう1つの方法を見つけてください:

ic.finishComposingText();
ic.deleteSurroundingText(word.length(),0);
ic.setComposingText(word, 1);            
ic.setSelection(fullInputedString.length(),fullInputedString.length());

それが正しいか?

それはどのように正しい方法である必要がありますか?

ターゲット SDK=8

ありがとう!


UPD: 次の解決策を見つけました

ic.finishComposingText();
ic.deleteSurroundingText(wordForInsert.length(), 0);
ic.setComposingText(wordForInsert, 1);

最新のAndroidバージョンでは、適切な方法を使用します:

ic.setComposingRegion();

ただし、このソリューションは、4.0v Android 以降の標準 Android ブラウザーで問題を引き起こします。

4

0 に答える 0