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.util.AttributeSet;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View;
import android.view.textclassifier.TextClassifier; import android.view.textclassifier.TextClassifier;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -123,14 +124,24 @@ public class FixedEditText extends AppCompatEditText {
super.onDraw(canvas); super.onDraw(canvas);
} catch (Throwable ex) { } catch (Throwable ex) {
Log.w(ex); Log.w(ex);
/* if (ex instanceof ArrayIndexOutOfBoundsException)
java.lang.ArrayIndexOutOfBoundsException: length=39; index=-3 try {
at android.text.DynamicLayout.getBlockIndex(DynamicLayout.java:648) /*
at android.widget.Editor.drawHardwareAccelerated(Editor.java:1703) java.lang.ArrayIndexOutOfBoundsException: length=39; index=-3
at android.widget.Editor.onDraw(Editor.java:1672) at android.text.DynamicLayout.getBlockIndex(DynamicLayout.java:648)
at android.widget.TextView.onDraw(TextView.java:6914) at android.widget.Editor.drawHardwareAccelerated(Editor.java:1703)
at android.view.View.draw(View.java:19200) 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