diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditText.java b/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditText.java index f22218f7..11a2e59e 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditText.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditText.java @@ -22,8 +22,11 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; +import android.os.Build; import android.os.Bundle; import android.os.Parcelable; +import android.service.autofill.AutofillService; +import android.support.annotation.RequiresApi; import android.support.v7.widget.AppCompatEditText; import android.text.Editable; import android.text.Layout; @@ -32,6 +35,7 @@ import android.util.Log; import android.util.TimingLogger; import android.view.Gravity; import android.view.MotionEvent; +import android.view.autofill.AutofillManager; import org.autojs.autojs.ui.edit.theme.Theme; import org.autojs.autojs.ui.edit.theme.TokenMapping; @@ -93,6 +97,15 @@ public class CodeEditText extends AppCompatEditText { setHorizontallyScrolling(true); mTheme = Theme.getDefault(getContext()); mLineHighlightPaint.setStyle(Paint.Style.FILL); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + setImportantForAutofill(IMPORTANT_FOR_AUTOFILL_NO); + } + } + + @RequiresApi(api = Build.VERSION_CODES.O) + @Override + public int getAutofillType() { + return AUTOFILL_TYPE_NONE; } public LinkedHashMap getBreakpoints() { diff --git a/autojs/src/main/java/com/stardust/autojs/core/ui/ViewExtras.java b/autojs/src/main/java/com/stardust/autojs/core/ui/ViewExtras.java index 695cb4c1..7cf5ca84 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/ui/ViewExtras.java +++ b/autojs/src/main/java/com/stardust/autojs/core/ui/ViewExtras.java @@ -4,6 +4,7 @@ import android.view.View; import com.stardust.autojs.R; import com.stardust.autojs.core.ui.attribute.ViewAttributes; +import com.stardust.autojs.core.ui.attribute.ViewAttributesFactory; import com.stardust.autojs.core.ui.inflater.ResourceParser; import com.stardust.autojs.core.ui.nativeview.NativeView; import com.stardust.autojs.runtime.ScriptRuntime; @@ -33,7 +34,7 @@ public class ViewExtras { ViewExtras extras = get(view); ViewAttributes attributes = extras.getViewAttributes(); if (attributes == null) { - attributes = new ViewAttributes(parser, view); + attributes = ViewAttributesFactory.create(parser, view); extras.setViewAttributes(attributes); } return attributes; diff --git a/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ImageViewAttributes.java b/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ImageViewAttributes.java new file mode 100644 index 00000000..dffc6ef9 --- /dev/null +++ b/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ImageViewAttributes.java @@ -0,0 +1,79 @@ +package com.stardust.autojs.core.ui.attribute; + +import android.content.res.ColorStateList; +import android.graphics.Color; +import android.graphics.PorterDuff; +import android.os.Build; +import android.support.v4.widget.ImageViewCompat; +import android.view.View; +import android.widget.ImageView; + +import com.stardust.autojs.core.ui.inflater.ResourceParser; +import com.stardust.util.BiMap; +import com.stardust.util.BiMaps; + +import static com.stardust.autojs.core.ui.inflater.inflaters.BaseViewInflater.TINT_MODES; + +public class ImageViewAttributes extends ViewAttributes { + + private static final BiMap SCALE_TYPES = BiMaps.newBuilder() + .put("center", ImageView.ScaleType.CENTER) + .put("centerCrop", ImageView.ScaleType.CENTER_CROP) + .put("centerInside", ImageView.ScaleType.CENTER_INSIDE) + .put("fitCenter", ImageView.ScaleType.FIT_CENTER) + .put("fitEnd", ImageView.ScaleType.FIT_END) + .put("fitStart", ImageView.ScaleType.FIT_START) + .put("fitXY", ImageView.ScaleType.FIT_XY) + .put("matrix", ImageView.ScaleType.MATRIX) + .build(); + + public ImageViewAttributes(ResourceParser resourceParser, View view) { + super(resourceParser, view); + } + + @Override + protected void onRegisterAttrs() { + super.onRegisterAttrs(); + registerBooleanAttr("adjustViewBounds", getView()::setAdjustViewBounds); + registerIntPixelAttr("baseline", getView()::setBaseline); + registerBooleanAttr("baselineAlignBottom", getView()::setBaselineAlignBottom); + registerBooleanAttr("cropToPadding", getView()::setCropToPadding); + registerIntPixelAttr("maxHeight", getView()::setMaxHeight); + registerIntPixelAttr("maxWidth", getView()::setMaxWidth); + registerAttr("path", value -> + getDrawables().setupWithImage(getView(), wrapAsPath(value)) + ); + registerAttr("scaleType", getView()::getScaleType, getView()::setScaleType, SCALE_TYPES); + registerAttr("src", value -> + getDrawables().setupWithImage(getView(), value) + ); + registerAttr("tint", Color::parseColor, value -> { + ImageViewCompat.setImageTintList(getView(), ColorStateList.valueOf(value)); + }); + registerAttr("tintMode", TINT_MODES::get, value -> { + ImageViewCompat.setImageTintMode(getView(), value); + }); + registerAttr("url", value -> + getDrawables().setupWithImage(getView(), wrapAsUrl(value)) + ); + } + + private String wrapAsPath(String value) { + if (!value.startsWith("file://")) { + return "file://" + value; + } + return value; + } + + private String wrapAsUrl(String value) { + if (!value.startsWith("http://") && !value.startsWith("https://")) { + return "http://" + value; + } + return value; + } + + @Override + public ImageView getView() { + return (ImageView) super.getView(); + } +} diff --git a/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/TextViewAttributes.java b/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/TextViewAttributes.java new file mode 100644 index 00000000..b4e0ce1c --- /dev/null +++ b/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/TextViewAttributes.java @@ -0,0 +1,24 @@ +package com.stardust.autojs.core.ui.attribute; + +import android.view.View; +import android.widget.TextView; + +import com.stardust.autojs.core.ui.inflater.ResourceParser; + +public class TextViewAttributes extends ViewAttributes { + + public TextViewAttributes(ResourceParser resourceParser, View view) { + super(resourceParser, view); + } + + @Override + protected void onRegisterAttrs() { + super.onRegisterAttrs(); + + } + + @Override + public TextView getView() { + return (TextView) super.getView(); + } +} diff --git a/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ViewAttributes.java b/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ViewAttributes.java index 3953d323..877acb3d 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ViewAttributes.java +++ b/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ViewAttributes.java @@ -13,6 +13,7 @@ import android.view.ViewGroup; import android.view.ViewParent; import android.widget.CompoundButton; import android.widget.FrameLayout; +import android.widget.ImageView; import android.widget.LinearLayout; import com.stardust.autojs.core.internal.Functions; @@ -23,6 +24,8 @@ import com.stardust.autojs.core.ui.inflater.util.Drawables; import com.stardust.autojs.core.ui.inflater.util.Gravities; import com.stardust.autojs.core.ui.inflater.util.Ids; import com.stardust.autojs.core.ui.inflater.util.Strings; +import com.stardust.util.BiMap; +import com.stardust.util.Supplier; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -86,6 +89,10 @@ public class ViewAttributes { void apply(T value); } + protected interface ValueGetter { + T get(); + } + protected static class MappingAttributeSetter implements AttributeSetter { private final ValueConverter mValueConverter; @@ -102,6 +109,7 @@ public class ViewAttributes { } } + private Map mAttributes = new HashMap<>(); private final Drawables mDrawables; private final View mView; @@ -113,6 +121,14 @@ public class ViewAttributes { } + public Drawables getDrawables() { + return mDrawables; + } + + public View getView() { + return mView; + } + public boolean contains(String name) { return mAttributes.containsKey(name); } @@ -207,37 +223,37 @@ public class ViewAttributes { registerAttr("layoutDirection", LAYOUT_DIRECTIONS::get, mView::setLayoutDirection); } - private void setForegroundTintMode(PorterDuff.Mode mode) { + protected void setForegroundTintMode(PorterDuff.Mode mode) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { mView.setForegroundTintMode(mode); } } - private void setForegroundGravity(int g) { + protected void setForegroundGravity(int g) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { mView.setForegroundGravity(g); } } - private void setForeground(Drawable foreground) { + protected void setForeground(Drawable foreground) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { mView.setForeground(foreground); } } - private void forceHasOverlappingRendering(boolean b) { + protected void forceHasOverlappingRendering(boolean b) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { mView.forceHasOverlappingRendering(b); } } - private void setElevation(int e) { + protected void setElevation(int e) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mView.setElevation(e); } } - private void setScrollbars(String scrollbars) { + protected void setScrollbars(String scrollbars) { for (String str : scrollbars.split("\\|")) { if (str.equals("horizontal")) { mView.setHorizontalScrollBarEnabled(true); @@ -248,16 +264,16 @@ public class ViewAttributes { } - private float parseDimensionToPixel(String value) { + protected float parseDimensionToPixel(String value) { return Dimensions.parseToPixel(mView, value); } - private int parseDimensionToIntPixel(String value) { + protected int parseDimensionToIntPixel(String value) { return Dimensions.parseToIntPixel(value, mView); } - private int parseDimension(String dim) { + protected int parseDimension(String dim) { switch (dim) { case "wrap_content": return ViewGroup.LayoutParams.WRAP_CONTENT; @@ -273,6 +289,21 @@ public class ViewAttributes { mAttributes.put(name, attribute); } + protected void registerAttr(String name, ValueGetter getter, ValueApplier setter, BiMap biMap) { + mAttributes.put(name, new Attribute() { + @Override + public String get() { + return biMap.getKey(getter.get()); + } + + @Override + public void set(String value) { + V v = biMap.get(value); + setter.apply(v); + } + }); + } + protected void registerAttr(String name, AttributeGetter getter, AttributeSetter setter) { mAttributes.put(name, new Attribute() { @Override @@ -315,17 +346,25 @@ public class ViewAttributes { } - private void registerDrawableAttrs(String[] names, ValueApplier applier) { + protected void registerDrawableAttrs(String[] names, ValueApplier applier) { registerAttrs(names, new BaseAttribute(new MappingAttributeSetter<>( this::parseDrawable, applier))); } + protected void registerIntPixelAttr(String name, ValueApplier applier) { + registerAttr(name, this::parseDimensionToIntPixel, applier); + } + + protected void registerBooleanAttr(String name, ValueApplier applier) { + registerAttr(name, Boolean::parseBoolean, applier); + } + protected Drawable parseDrawable(String value) { return mDrawables.parse(mView, value); } - private boolean setGravity(int g) { + protected boolean setGravity(int g) { try { Method setGravity = mView.getClass().getMethod("setGravity", int.class); setGravity.invoke(mView, g); @@ -336,7 +375,7 @@ public class ViewAttributes { } } - private void setMargin(int margin) { + protected void setMargin(int margin) { if (mView.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams(); params.bottomMargin = params.leftMargin = params.topMargin = params.rightMargin = margin; @@ -347,28 +386,28 @@ public class ViewAttributes { } } - private void setMarginLeft(int margin) { + protected void setMarginLeft(int margin) { if (mView.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams(); params.leftMargin = margin; } } - private void setMarginRight(int margin) { + protected void setMarginRight(int margin) { if (mView.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams(); params.rightMargin = margin; } } - private void setMarginTop(int margin) { + protected void setMarginTop(int margin) { if (mView.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams(); params.topMargin = margin; } } - private void setMarginBottom(int margin) { + protected void setMarginBottom(int margin) { if (mView.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams(); params.bottomMargin = margin; @@ -377,72 +416,72 @@ public class ViewAttributes { } } - private void setMarginStart(int margin) { + protected void setMarginStart(int margin) { if (mView.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams(); params.setMarginStart(margin); } } - private void setMarginEnd(int margin) { + protected void setMarginEnd(int margin) { if (mView.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams(); params.setMarginEnd(margin); } } - private void setPadding(int padding) { + protected void setPadding(int padding) { mView.setPadding(padding, padding, padding, padding); } - private void setPaddingLeft(int padding) { + protected void setPaddingLeft(int padding) { mView.setPadding(padding, mView.getPaddingTop(), mView.getPaddingRight(), mView.getPaddingBottom()); } - private void setPaddingRight(int padding) { + protected void setPaddingRight(int padding) { mView.setPadding(mView.getPaddingLeft(), mView.getPaddingTop(), padding, mView.getPaddingBottom()); } - private void setPaddingTop(int padding) { + protected void setPaddingTop(int padding) { mView.setPadding(mView.getPaddingLeft(), padding, mView.getPaddingRight(), mView.getPaddingBottom()); } - private void setPaddingStart(int padding) { + protected void setPaddingStart(int padding) { mView.setPaddingRelative(padding, mView.getPaddingTop(), mView.getPaddingEnd(), mView.getPaddingBottom()); } - private void setPaddingEnd(int padding) { + protected void setPaddingEnd(int padding) { mView.setPaddingRelative(mView.getPaddingStart(), mView.getPaddingTop(), padding, mView.getPaddingBottom()); } - private void setPaddingBottom(int padding) { + protected void setPaddingBottom(int padding) { mView.setPadding(mView.getPaddingLeft(), mView.getPaddingTop(), mView.getPaddingRight(), padding); } - private void setBackgroundTint(int color) { + protected void setBackgroundTint(int color) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mView.setBackgroundTintList(ColorStateList.valueOf(color)); } } - private void setContextClickable(boolean clickable) { + protected void setContextClickable(boolean clickable) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { mView.setContextClickable(clickable); } } - private void setChecked(boolean checked) { + protected void setChecked(boolean checked) { if (mView instanceof CompoundButton) { ((CompoundButton) mView).setChecked(checked); } } - private void setLayoutGravity(int gravity) { + protected void setLayoutGravity(int gravity) { ViewParent parent = mView.getParent(); ViewGroup.LayoutParams layoutParams = mView.getLayoutParams(); if (parent instanceof LinearLayout) { @@ -463,7 +502,7 @@ public class ViewAttributes { } } - private void setLayoutWeight(float weight) { + protected void setLayoutWeight(float weight) { ViewParent parent = mView.getParent(); ViewGroup.LayoutParams layoutParams = mView.getLayoutParams(); if (parent instanceof LinearLayout) { @@ -473,25 +512,25 @@ public class ViewAttributes { } - private void setWidth(int width) { + protected void setWidth(int width) { ViewGroup.LayoutParams layoutParams = mView.getLayoutParams(); layoutParams.width = width; mView.setLayoutParams(layoutParams); } - private void setHeight(int height) { + protected void setHeight(int height) { ViewGroup.LayoutParams layoutParams = mView.getLayoutParams(); layoutParams.height = height; mView.setLayoutParams(layoutParams); } - private String parseString(String value) { + protected String parseString(String value) { return Strings.parse(mView, value); } - private static < - T1, T2> ValueApplier bind(Functions.VoidFunc2 func2, T1 t1) { + protected static ValueApplier bind(Functions.VoidFunc2 func2, T1 t1) { return value -> func2.call(t1, value); } + } diff --git a/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ViewAttributesFactory.java b/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ViewAttributesFactory.java new file mode 100644 index 00000000..0f33e2dc --- /dev/null +++ b/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ViewAttributesFactory.java @@ -0,0 +1,37 @@ +package com.stardust.autojs.core.ui.attribute; + +import android.view.View; +import android.widget.ImageView; + +import com.stardust.autojs.core.ui.inflater.ResourceParser; + +import java.util.HashMap; + +public class ViewAttributesFactory { + + interface ViewAttributesCreator { + ViewAttributes create(ResourceParser resourceParser, View view); + } + + private static HashMap, ViewAttributesCreator> sViewAttributesCreators = new HashMap<>(); + + static { + sViewAttributesCreators.put(ImageView.class, ImageViewAttributes::new); + } + + public static void put(Class clazz, ViewAttributesCreator creator) { + sViewAttributesCreators.put(clazz, creator); + } + + public static ViewAttributes create(ResourceParser resourceParser, View view) { + Class viewClass = view.getClass(); + while (viewClass != null && !viewClass.equals(Object.class)) { + ViewAttributesCreator creator = sViewAttributesCreators.get(viewClass); + if (creator != null) { + return creator.create(resourceParser, view); + } + viewClass = viewClass.getSuperclass(); + } + return new ViewAttributes(resourceParser, view); + } +} diff --git a/autojs/src/main/java/com/stardust/autojs/core/ui/inflater/inflaters/ImageViewInflater.java b/autojs/src/main/java/com/stardust/autojs/core/ui/inflater/inflaters/ImageViewInflater.java index 6903b33b..1de52e9c 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/ui/inflater/inflaters/ImageViewInflater.java +++ b/autojs/src/main/java/com/stardust/autojs/core/ui/inflater/inflaters/ImageViewInflater.java @@ -37,9 +37,7 @@ public class ImageViewInflater extends BaseViewInflater view.setBaselineAlignBottom(Boolean.valueOf(value)); break; case "cropToPadding": - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - view.setCropToPadding(Boolean.valueOf(value)); - } + view.setCropToPadding(Boolean.valueOf(value)); break; case "maxHeight": view.setMaxHeight(Dimensions.parseToIntPixel(value, view)); diff --git a/autojs/src/main/java/com/stardust/autojs/core/ui/inflater/inflaters/TextViewInflater.java b/autojs/src/main/java/com/stardust/autojs/core/ui/inflater/inflaters/TextViewInflater.java index a5eb1e03..27a868df 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/ui/inflater/inflaters/TextViewInflater.java +++ b/autojs/src/main/java/com/stardust/autojs/core/ui/inflater/inflaters/TextViewInflater.java @@ -230,18 +230,10 @@ public class TextViewInflater extends BaseViewInflater { } break; case "lineSpacingExtra": - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - view.setLineSpacing(Dimensions.parseToIntPixel(value, view), view.getLineSpacingMultiplier()); - } else { - mLineSpacingExtra = Dimensions.parseToIntPixel(value, view); - } + view.setLineSpacing(Dimensions.parseToIntPixel(value, view), view.getLineSpacingMultiplier()); break; case "lineSpacingMultiplier": - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - view.setLineSpacing(view.getLineSpacingExtra(), Dimensions.parseToIntPixel(value, view)); - } else { - mLineSpacingMultiplier = Dimensions.parseToIntPixel(value, view); - } + view.setLineSpacing(view.getLineSpacingExtra(), Dimensions.parseToIntPixel(value, view)); break; case "lines": view.setLines(Integer.valueOf(value)); @@ -302,24 +294,16 @@ public class TextViewInflater extends BaseViewInflater { view.setSelectAllOnFocus(Boolean.valueOf(value)); break; case "shadowColor": - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - view.setShadowLayer(view.getShadowRadius(), view.getShadowDx(), view.getShadowDy(), Colors.parse(view, value)); - } + view.setShadowLayer(view.getShadowRadius(), view.getShadowDx(), view.getShadowDy(), Colors.parse(view, value)); break; case "shadowDx": - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - view.setShadowLayer(view.getShadowRadius(), Dimensions.parseToPixel(value, view), view.getShadowDy(), view.getShadowColor()); - } + view.setShadowLayer(view.getShadowRadius(), Dimensions.parseToPixel(value, view), view.getShadowDy(), view.getShadowColor()); break; case "shadowDy": - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - view.setShadowLayer(view.getShadowRadius(), view.getShadowDx(), Dimensions.parseToPixel(value, view), view.getShadowColor()); - } + view.setShadowLayer(view.getShadowRadius(), view.getShadowDx(), Dimensions.parseToPixel(value, view), view.getShadowColor()); break; case "shadowRadius": - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - view.setShadowLayer(Dimensions.parseToPixel(value, view), view.getShadowDx(), view.getShadowDy(), view.getShadowColor()); - } + view.setShadowLayer(Dimensions.parseToPixel(value, view), view.getShadowDx(), view.getShadowDy(), view.getShadowColor()); break; case "singleLine": view.setSingleLine(Boolean.valueOf(value)); diff --git a/autojs/src/main/java/com/stardust/autojs/core/ui/widget/JsImageView.java b/autojs/src/main/java/com/stardust/autojs/core/ui/widget/JsImageView.java index a7317b39..14e5603a 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/ui/widget/JsImageView.java +++ b/autojs/src/main/java/com/stardust/autojs/core/ui/widget/JsImageView.java @@ -1,6 +1,8 @@ package com.stardust.autojs.core.ui.widget; import android.content.Context; +import android.support.v4.widget.ImageViewCompat; +import android.support.v7.widget.AppCompatImageView; import android.util.AttributeSet; import com.makeramen.roundedimageview.RoundedImageView; @@ -21,6 +23,7 @@ public class JsImageView extends RoundedImageView { super(context); } + public JsImageView(Context context, AttributeSet attrs) { super(context, attrs); } diff --git a/autojs/src/main/java/com/stardust/autojs/core/ui/widget/JsTextView.java b/autojs/src/main/java/com/stardust/autojs/core/ui/widget/JsTextView.java index 9867fa80..77ff12ac 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/ui/widget/JsTextView.java +++ b/autojs/src/main/java/com/stardust/autojs/core/ui/widget/JsTextView.java @@ -5,6 +5,7 @@ import android.content.Context; import android.os.Build; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; +import android.support.v7.widget.AppCompatTextView; import android.util.AttributeSet; import android.widget.TextView; @@ -13,7 +14,8 @@ import android.widget.TextView; */ @SuppressLint("AppCompatCustomView") -public class JsTextView extends TextView { +public class JsTextView extends AppCompatTextView { + public JsTextView(Context context) { super(context); } @@ -26,11 +28,6 @@ public class JsTextView extends TextView { super(context, attrs, defStyleAttr); } - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) - public JsTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - } - public String text() { return getText().toString(); }