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;
}
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);
}
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();
}
Aggregations