S・シャー:
私は別の質問を検索するが、私の問題について何も特定のを見つけました。私は色を選択することで、テキストの色を変更し、私はこのエラーを取得するカラーテキストを入力した後、私のエディットテキストの削除を開始したときただし、正常に動作しています。
myedittext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor(txtColor)), start, start+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
私は次のエラーを取得します
java.lang.IndexOutOfBoundsException: setSpan (118 ... 119) ends beyond length 118
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1309)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:680)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:672)
at com.apps.primalnotes.Fragments.EditorFragment$16.onTextChanged(EditorFragment.java:842)
at android.widget.TextView.sendOnTextChanged(TextView.java:10611)
at android.widget.TextView.handleTextChanged(TextView.java:10715)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:14057)
私はこのようになりました2色で書いています
今私はそれを保存するとき。それだけでこのようなショーに私をピンク色に保存されますが、今私は保存、それが再びそれが色で保存する変更しなくても、私はそれを書いたとき、
リチャードMcFriendテキサス:
onTextChanged方法は、内ことを伝えるために呼び出されCharSequence s
た文字の数は、count
先頭にstart
長さだけを持っていた古いテキストを置き換えていますbefore
。
何が起こっていることはあなたが7つの文字の前に持っていた場合は、ユーザーを押すとバックスペースは、スタートがあなたのCharSequenceすなわちの上限であるときに、スタートは最後の要素と同じである6であるということです。あなたはやっているstart+1
、常にインデックス範囲の数のうちです。
myedittext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(start < s.length() - 1 || count > before){
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor(txtColor)), start, start+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
そのコードを試して取得していないが、それは動作するはずです。それはあなたが間違って何をしているかのアイデアと何をやるべきことを表示するだけです。