mirror of
https://github.com/TonyJiangWJ/Auto.js.git
synced 2026-06-24 21:33:16 +08:00
feat: img attrs; disable CodeEditText autofill
This commit is contained in:
parent
4c482428dd
commit
506a68d816
@ -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<Integer, CodeEditor.Breakpoint> getBreakpoints() {
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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<String, ImageView.ScaleType> SCALE_TYPES = BiMaps.<String, ImageView.ScaleType>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();
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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> {
|
||||
T get();
|
||||
}
|
||||
|
||||
protected static class MappingAttributeSetter<T> implements AttributeSetter {
|
||||
|
||||
private final ValueConverter<T> mValueConverter;
|
||||
@ -102,6 +109,7 @@ public class ViewAttributes {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private Map<String, Attribute> 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 <V> void registerAttr(String name, ValueGetter<V> getter, ValueApplier<V> setter, BiMap<String, V> 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<Drawable> applier) {
|
||||
protected void registerDrawableAttrs(String[] names, ValueApplier<Drawable> applier) {
|
||||
registerAttrs(names, new BaseAttribute(new MappingAttributeSetter<>(
|
||||
this::parseDrawable, applier)));
|
||||
}
|
||||
|
||||
protected void registerIntPixelAttr(String name, ValueApplier<Integer> applier) {
|
||||
registerAttr(name, this::parseDimensionToIntPixel, applier);
|
||||
}
|
||||
|
||||
protected void registerBooleanAttr(String name, ValueApplier<Boolean> 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<T2> bind(Functions.VoidFunc2<T1, T2> func2, T1 t1) {
|
||||
protected static <T1, T2> ValueApplier<T2> bind(Functions.VoidFunc2<T1, T2> func2, T1 t1) {
|
||||
return value -> func2.call(t1, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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<Class<? extends View>, ViewAttributesCreator> sViewAttributesCreators = new HashMap<>();
|
||||
|
||||
static {
|
||||
sViewAttributesCreators.put(ImageView.class, ImageViewAttributes::new);
|
||||
}
|
||||
|
||||
public static void put(Class<? extends View> 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);
|
||||
}
|
||||
}
|
||||
@ -37,9 +37,7 @@ public class ImageViewInflater<V extends ImageView> extends BaseViewInflater<V>
|
||||
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));
|
||||
|
||||
@ -230,18 +230,10 @@ public class TextViewInflater<V extends TextView> extends BaseViewInflater<V> {
|
||||
}
|
||||
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<V extends TextView> extends BaseViewInflater<V> {
|
||||
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));
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user