.NET Framework Editable
의 기반으로 구현되는 사용자 지정 형식을 사용하는 데 문제가 있습니다 EditText
. 내 코드는 다음과 같습니다.
// This is a custom type that implements Editable.
// It's just a wrapper over a SpannableStringBuilder, with some
// irrelevant added functionality.
public class ColoredText implements Editable {
private final SpannableStringBuilder builder;
public ColoredText(String text) {
this.builder = new SpannableStringBuilder(text);
}
// All Editable methods are implemented through this.builder.
@Override
public Editable replace(int i, int i1, CharSequence charSequence, int i2, int i3) {
this.builder.replace(i, i1, charSequence, i2, i3);
return this;
}
...
}
public class NoCopyEditableFactory extends Editable.Factory {
@Override
public Editable newEditable(CharSequence source) {
return (Editable) source;
}
}
// In MainActivity.java
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.main);
String line = "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE";
String text = TextUtils.join("\n", Collections.nCopies(100, line));
Editable e = new ColoredText(text);
EditText et = (EditText) findViewById(R.id.editText);
et.setEditableFactory(new NoCopyEditableFactory()); // This line is causing trouble.
et.setText(e, TextView.BufferType.EDITABLE);
}
// In the MainActivity layout file
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
어떤 이유로을 주석 처리 NoCopyEditableFactory
하면 커서가 제대로 업데이트됩니다. 그러나를 new로 EditText
복사하지 않도록 강제하는 줄의 주석 처리를 제거 하면 텍스트의 새 위치를 클릭해도 커서가 업데이트되지 않습니다. 왜 이런거야?ColoredText
SpannableStringBuilder
문제는 내 Editable
구현으로 밝혀졌습니다 . 오작동하는 코드를 삭제 한 후에는 정상적으로 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다