Attempt to workaround Android 8 block index bug

pull/208/head
M66B 2 years ago
parent 617824ff3e
commit 388af6e7c5

@ -25,6 +25,7 @@ import android.os.Build;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.textclassifier.TextClassifier;
import androidx.annotation.NonNull;
@ -123,14 +124,24 @@ public class FixedEditText extends AppCompatEditText {
super.onDraw(canvas);
} catch (Throwable ex) {
Log.w(ex);
/*
java.lang.ArrayIndexOutOfBoundsException: length=39; index=-3
at android.text.DynamicLayout.getBlockIndex(DynamicLayout.java:648)
at android.widget.Editor.drawHardwareAccelerated(Editor.java:1703)
at android.widget.Editor.onDraw(Editor.java:1672)
at android.widget.TextView.onDraw(TextView.java:6914)
at android.view.View.draw(View.java:19200)
*/
if (ex instanceof ArrayIndexOutOfBoundsException)
try {
/*
java.lang.ArrayIndexOutOfBoundsException: length=39; index=-3
at android.text.DynamicLayout.getBlockIndex(DynamicLayout.java:648)
at android.widget.Editor.drawHardwareAccelerated(Editor.java:1703)
at android.widget.Editor.onDraw(Editor.java:1672)
at android.widget.TextView.onDraw(TextView.java:6914)
at android.view.View.draw(View.java:19200)
Fixed in Android 9:
https://android-review.googlesource.com/c/platform/frameworks/base/+/634929
*/
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
super.onDraw(canvas);
} catch (Throwable exex) {
Log.w(exex);
}
}
}

Loading…
Cancel
Save