Search in sources :

Example 11 with TransformationMethod

use of android.text.method.TransformationMethod in project LuaViewSDK by alibaba.

the class AutofitHelper method getMaxLines.

private static int getMaxLines(TextView view) {
    // No limit (Integer.MAX_VALUE also means no limit)
    int maxLines = -1;
    TransformationMethod method = view.getTransformationMethod();
    if (method != null && method instanceof SingleLineTransformationMethod) {
        maxLines = 1;
    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        // setMaxLines() and getMaxLines() are only available on android-16+
        maxLines = view.getMaxLines();
    }
    return maxLines;
}
Also used : TransformationMethod(android.text.method.TransformationMethod) SingleLineTransformationMethod(android.text.method.SingleLineTransformationMethod) SingleLineTransformationMethod(android.text.method.SingleLineTransformationMethod) TextPaint(android.text.TextPaint)

Example 12 with TransformationMethod

use of android.text.method.TransformationMethod in project LuaViewSDK by alibaba.

the class AutofitHelper method autofit.

/**
     * Re-sizes the textSize of the TextView so that the text fits within the bounds of the View.
     */
private static void autofit(TextView view, TextPaint paint, float minTextSize, float maxTextSize, int maxLines, float precision) {
    if (maxLines <= 0 || maxLines == Integer.MAX_VALUE) {
        // Don't auto-size since there's no limit on lines.
        return;
    }
    int targetWidth = view.getWidth() - view.getPaddingLeft() - view.getPaddingRight();
    if (targetWidth <= 0) {
        return;
    }
    CharSequence text = view.getText();
    TransformationMethod method = view.getTransformationMethod();
    if (method != null) {
        text = method.getTransformation(text, view);
    }
    Context context = view.getContext();
    Resources r = Resources.getSystem();
    DisplayMetrics displayMetrics;
    float size = maxTextSize;
    float high = size;
    float low = 0;
    if (context != null) {
        r = context.getResources();
    }
    displayMetrics = r.getDisplayMetrics();
    paint.set(view.getPaint());
    paint.setTextSize(size);
    if ((maxLines == 1 && paint.measureText(text, 0, text.length()) > targetWidth) || getLineCount(text, paint, size, targetWidth, displayMetrics) > maxLines) {
        size = getAutofitTextSize(text, paint, targetWidth, maxLines, low, high, precision, displayMetrics);
    }
    if (size < minTextSize) {
        size = minTextSize;
    }
    view.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
}
Also used : Context(android.content.Context) TransformationMethod(android.text.method.TransformationMethod) SingleLineTransformationMethod(android.text.method.SingleLineTransformationMethod) Resources(android.content.res.Resources) DisplayMetrics(android.util.DisplayMetrics) TextPaint(android.text.TextPaint)

Example 13 with TransformationMethod

use of android.text.method.TransformationMethod in project MaterialEditText by rengwuxian.

the class MaterialMultiAutoCompleteTextView method init.

private void init(Context context, AttributeSet attrs) {
    iconSize = getPixel(32);
    iconOuterWidth = getPixel(48);
    iconOuterHeight = getPixel(32);
    bottomSpacing = getResources().getDimensionPixelSize(R.dimen.inner_components_spacing);
    bottomEllipsisSize = getResources().getDimensionPixelSize(R.dimen.bottom_ellipsis_height);
    // default baseColor is black
    int defaultBaseColor = Color.BLACK;
    TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MaterialEditText);
    textColorStateList = typedArray.getColorStateList(R.styleable.MaterialEditText_met_textColor);
    textColorHintStateList = typedArray.getColorStateList(R.styleable.MaterialEditText_met_textColorHint);
    baseColor = typedArray.getColor(R.styleable.MaterialEditText_met_baseColor, defaultBaseColor);
    // retrieve the default primaryColor
    int defaultPrimaryColor;
    TypedValue primaryColorTypedValue = new TypedValue();
    try {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            context.getTheme().resolveAttribute(android.R.attr.colorPrimary, primaryColorTypedValue, true);
            defaultPrimaryColor = primaryColorTypedValue.data;
        } else {
            throw new RuntimeException("SDK_INT less than LOLLIPOP");
        }
    } catch (Exception e) {
        try {
            int colorPrimaryId = getResources().getIdentifier("colorPrimary", "attr", getContext().getPackageName());
            if (colorPrimaryId != 0) {
                context.getTheme().resolveAttribute(colorPrimaryId, primaryColorTypedValue, true);
                defaultPrimaryColor = primaryColorTypedValue.data;
            } else {
                throw new RuntimeException("colorPrimary not found");
            }
        } catch (Exception e1) {
            defaultPrimaryColor = baseColor;
        }
    }
    primaryColor = typedArray.getColor(R.styleable.MaterialEditText_met_primaryColor, defaultPrimaryColor);
    setFloatingLabelInternal(typedArray.getInt(R.styleable.MaterialEditText_met_floatingLabel, 0));
    errorColor = typedArray.getColor(R.styleable.MaterialEditText_met_errorColor, Color.parseColor("#e7492E"));
    minCharacters = typedArray.getInt(R.styleable.MaterialEditText_met_minCharacters, 0);
    maxCharacters = typedArray.getInt(R.styleable.MaterialEditText_met_maxCharacters, 0);
    singleLineEllipsis = typedArray.getBoolean(R.styleable.MaterialEditText_met_singleLineEllipsis, false);
    helperText = typedArray.getString(R.styleable.MaterialEditText_met_helperText);
    helperTextColor = typedArray.getColor(R.styleable.MaterialEditText_met_helperTextColor, -1);
    minBottomTextLines = typedArray.getInt(R.styleable.MaterialEditText_met_minBottomTextLines, 0);
    String fontPathForAccent = typedArray.getString(R.styleable.MaterialEditText_met_accentTypeface);
    if (fontPathForAccent != null && !isInEditMode()) {
        accentTypeface = getCustomTypeface(fontPathForAccent);
        textPaint.setTypeface(accentTypeface);
    }
    String fontPathForView = typedArray.getString(R.styleable.MaterialEditText_met_typeface);
    if (fontPathForView != null && !isInEditMode()) {
        typeface = getCustomTypeface(fontPathForView);
        setTypeface(typeface);
    }
    floatingLabelText = typedArray.getString(R.styleable.MaterialEditText_met_floatingLabelText);
    if (floatingLabelText == null) {
        floatingLabelText = getHint();
    }
    floatingLabelPadding = typedArray.getDimensionPixelSize(R.styleable.MaterialEditText_met_floatingLabelPadding, bottomSpacing);
    floatingLabelTextSize = typedArray.getDimensionPixelSize(R.styleable.MaterialEditText_met_floatingLabelTextSize, getResources().getDimensionPixelSize(R.dimen.floating_label_text_size));
    floatingLabelTextColor = typedArray.getColor(R.styleable.MaterialEditText_met_floatingLabelTextColor, -1);
    floatingLabelAnimating = typedArray.getBoolean(R.styleable.MaterialEditText_met_floatingLabelAnimating, true);
    bottomTextSize = typedArray.getDimensionPixelSize(R.styleable.MaterialEditText_met_bottomTextSize, getResources().getDimensionPixelSize(R.dimen.bottom_text_size));
    hideUnderline = typedArray.getBoolean(R.styleable.MaterialEditText_met_hideUnderline, false);
    underlineColor = typedArray.getColor(R.styleable.MaterialEditText_met_underlineColor, -1);
    autoValidate = typedArray.getBoolean(R.styleable.MaterialEditText_met_autoValidate, false);
    iconLeftBitmaps = generateIconBitmaps(typedArray.getResourceId(R.styleable.MaterialEditText_met_iconLeft, -1));
    iconRightBitmaps = generateIconBitmaps(typedArray.getResourceId(R.styleable.MaterialEditText_met_iconRight, -1));
    showClearButton = typedArray.getBoolean(R.styleable.MaterialEditText_met_clearButton, false);
    clearButtonBitmaps = generateIconBitmaps(R.drawable.met_ic_clear);
    iconPadding = typedArray.getDimensionPixelSize(R.styleable.MaterialEditText_met_iconPadding, getPixel(16));
    floatingLabelAlwaysShown = typedArray.getBoolean(R.styleable.MaterialEditText_met_floatingLabelAlwaysShown, false);
    helperTextAlwaysShown = typedArray.getBoolean(R.styleable.MaterialEditText_met_helperTextAlwaysShown, false);
    validateOnFocusLost = typedArray.getBoolean(R.styleable.MaterialEditText_met_validateOnFocusLost, false);
    checkCharactersCountAtBeginning = typedArray.getBoolean(R.styleable.MaterialEditText_met_checkCharactersCountAtBeginning, true);
    typedArray.recycle();
    int[] paddings = new int[] { // 0
    android.R.attr.padding, // 1
    android.R.attr.paddingLeft, // 2
    android.R.attr.paddingTop, // 3
    android.R.attr.paddingRight, // 4
    android.R.attr.paddingBottom };
    TypedArray paddingsTypedArray = context.obtainStyledAttributes(attrs, paddings);
    int padding = paddingsTypedArray.getDimensionPixelSize(0, 0);
    innerPaddingLeft = paddingsTypedArray.getDimensionPixelSize(1, padding);
    innerPaddingTop = paddingsTypedArray.getDimensionPixelSize(2, padding);
    innerPaddingRight = paddingsTypedArray.getDimensionPixelSize(3, padding);
    innerPaddingBottom = paddingsTypedArray.getDimensionPixelSize(4, padding);
    paddingsTypedArray.recycle();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        setBackground(null);
    } else {
        setBackgroundDrawable(null);
    }
    if (singleLineEllipsis) {
        TransformationMethod transformationMethod = getTransformationMethod();
        setSingleLine();
        setTransformationMethod(transformationMethod);
    }
    initMinBottomLines();
    initPadding();
    initText();
    initFloatingLabel();
    initTextWatcher();
    checkCharactersCount();
}
Also used : TypedArray(android.content.res.TypedArray) TransformationMethod(android.text.method.TransformationMethod) TextPaint(android.text.TextPaint) Paint(android.graphics.Paint) TypedValue(android.util.TypedValue)

Aggregations

TransformationMethod (android.text.method.TransformationMethod)13 TextPaint (android.text.TextPaint)11 Resources (android.content.res.Resources)7 SingleLineTransformationMethod (android.text.method.SingleLineTransformationMethod)6 Context (android.content.Context)5 DisplayMetrics (android.util.DisplayMetrics)5 TypedArray (android.content.res.TypedArray)3 Paint (android.graphics.Paint)3 TypedValue (android.util.TypedValue)3 LayoutParams (android.app.ActionBar.LayoutParams)2 Rect (android.graphics.Rect)2 View (android.view.View)2 OnClickListener (android.view.View.OnClickListener)2 RelativeLayout (android.widget.RelativeLayout)2 TextView (android.widget.TextView)2 DateFormatSymbols (java.text.DateFormatSymbols)2 ArrayList (java.util.ArrayList)2 Locale (java.util.Locale)2