Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * A {@link ViewGroup} that re-sizes the text of it's children to be no larger than the width of the
- * view.
- *
- * @attr ref R.styleable.AutofitTextView_sizeToFit
- * @attr ref R.styleable.AutofitTextView_minTextSize
- * @attr ref R.styleable.AutofitTextView_precision
- */
- public class AutofitLayout extends FrameLayout {
- private boolean mEnabled;
- private float mMinTextSize;
- private float mPrecision;
- private WeakHashMap<View, AutofitHelper> mHelpers = new WeakHashMap<View, AutofitHelper>();
- public AutofitLayout(Context context) {
- super(context);
- init(context, null, 0);
- }
- public AutofitLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- init(context, attrs, 0);
- }
- public AutofitLayout(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- init(context, attrs, defStyle);
- }
- private void init(Context context, AttributeSet attrs, int defStyle) {
- boolean sizeToFit = true;
- int minTextSize = -1;
- float precision = -1;
- if (attrs != null) {
- TypedArray ta = context.obtainStyledAttributes(
- attrs,
- R.styleable.AutofitTextView,
- defStyle,
- 0);
- sizeToFit = ta.getBoolean(R.styleable.AutofitTextView_sizeToFit, sizeToFit);
- minTextSize = ta.getDimensionPixelSize(R.styleable.AutofitTextView_minTextSize,
- minTextSize);
- precision = ta.getFloat(R.styleable.AutofitTextView_precision, precision);
- ta.recycle();
- }
- mEnabled = sizeToFit;
- mMinTextSize = minTextSize;
- mPrecision = precision;
- }
- @Override
- public void addView(View child, int index, ViewGroup.LayoutParams params) {
- super.addView(child, index, params);
- TextView textView = (TextView) child;
- AutofitHelper helper = AutofitHelper.create(textView)
- .setEnabled(mEnabled);
- if (mPrecision > 0) {
- helper.setPrecision(mPrecision);
- }
- if (mMinTextSize > 0) {
- helper.setMinTextSize(TypedValue.COMPLEX_UNIT_PX, mMinTextSize);
- }
- mHelpers.put(textView, helper);
- }
- /**
- * Returns the {@link AutofitHelper} for this child View.
- */
- public AutofitHelper getAutofitHelper(TextView textView) {
- return mHelpers.get(textView);
- }
- /**
- * Returns the {@link AutofitHelper} for this child View.
- */
- public AutofitHelper getAutofitHelper(int index) {
- return mHelpers.get(getChildAt(index));
- }
- }
- /**
- * A {@link ViewGroup} that re-sizes the text of it's children to be no larger than the width of the
- * view.
- *
- * @attr ref R.styleable.AutofitTextView_sizeToFit
- * @attr ref R.styleable.AutofitTextView_minTextSize
- * @attr ref R.styleable.AutofitTextView_precision
- */
- public class AutofitLayout extends FrameLayout {
- private boolean mEnabled;
- private float mMinTextSize;
- private float mPrecision;
- private WeakHashMap<View, AutofitHelper> mHelpers = new WeakHashMap<View, AutofitHelper>();
- public AutofitLayout(Context context) {
- super(context);
- init(context, null, 0);
- }
- public AutofitLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- init(context, attrs, 0);
- }
- public AutofitLayout(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- init(context, attrs, defStyle);
- }
- private void init(Context context, AttributeSet attrs, int defStyle) {
- boolean sizeToFit = true;
- int minTextSize = -1;
- float precision = -1;
- if (attrs != null) {
- TypedArray ta = context.obtainStyledAttributes(
- attrs,
- R.styleable.AutofitTextView,
- defStyle,
- 0);
- sizeToFit = ta.getBoolean(R.styleable.AutofitTextView_sizeToFit, sizeToFit);
- minTextSize = ta.getDimensionPixelSize(R.styleable.AutofitTextView_minTextSize,
- minTextSize);
- precision = ta.getFloat(R.styleable.AutofitTextView_precision, precision);
- ta.recycle();
- }
- mEnabled = sizeToFit;
- mMinTextSize = minTextSize;
- mPrecision = precision;
- }
- @Override
- public void addView(View child, int index, ViewGroup.LayoutParams params) {
- super.addView(child, index, params);
- TextView textView = (TextView) child;
- AutofitHelper helper = AutofitHelper.create(textView)
- .setEnabled(mEnabled);
- if (mPrecision > 0) {
- helper.setPrecision(mPrecision);
- }
- if (mMinTextSize > 0) {
- helper.setMinTextSize(TypedValue.COMPLEX_UNIT_PX, mMinTextSize);
- }
- mHelpers.put(textView, helper);
- }
- /**
- * Returns the {@link AutofitHelper} for this child View.
- */
- public AutofitHelper getAutofitHelper(TextView textView) {
- return mHelpers.get(textView);
- }
- /**
- * Returns the {@link AutofitHelper} for this child View.
- */
- public AutofitHelper getAutofitHelper(int index) {
- return mHelpers.get(getChildAt(index));
- }
- }
- /**
- * A {@link ViewGroup} that re-sizes the text of it's children to be no larger than the width of the
- * view.
- *
- * @attr ref R.styleable.AutofitTextView_sizeToFit
- * @attr ref R.styleable.AutofitTextView_minTextSize
- * @attr ref R.styleable.AutofitTextView_precision
- */
- public class AutofitLayout extends FrameLayout {
- private boolean mEnabled;
- private float mMinTextSize;
- private float mPrecision;
- private WeakHashMap<View, AutofitHelper> mHelpers = new WeakHashMap<View, AutofitHelper>();
- public AutofitLayout(Context context) {
- super(context);
- init(context, null, 0);
- }
- public AutofitLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- init(context, attrs, 0);
- }
- public AutofitLayout(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- init(context, attrs, defStyle);
- }
- private void init(Context context, AttributeSet attrs, int defStyle) {
- boolean sizeToFit = true;
- int minTextSize = -1;
- float precision = -1;
- if (attrs != null) {
- TypedArray ta = context.obtainStyledAttributes(
- attrs,
- R.styleable.AutofitTextView,
- defStyle,
- 0);
- sizeToFit = ta.getBoolean(R.styleable.AutofitTextView_sizeToFit, sizeToFit);
- minTextSize = ta.getDimensionPixelSize(R.styleable.AutofitTextView_minTextSize,
- minTextSize);
- precision = ta.getFloat(R.styleable.AutofitTextView_precision, precision);
- ta.recycle();
- }
- mEnabled = sizeToFit;
- mMinTextSize = minTextSize;
- mPrecision = precision;
- }
- @Override
- public void addView(View child, int index, ViewGroup.LayoutParams params) {
- super.addView(child, index, params);
- TextView textView = (TextView) child;
- AutofitHelper helper = AutofitHelper.create(textView)
- .setEnabled(mEnabled);
- if (mPrecision > 0) {
- helper.setPrecision(mPrecision);
- }
- if (mMinTextSize > 0) {
- helper.setMinTextSize(TypedValue.COMPLEX_UNIT_PX, mMinTextSize);
- }
- mHelpers.put(textView, helper);
- }
- /**
- * Returns the {@link AutofitHelper} for this child View.
- */
- public AutofitHelper getAutofitHelper(TextView textView) {
- return mHelpers.get(textView);
- }
- /**
- * Returns the {@link AutofitHelper} for this child View.
- */
- public AutofitHelper getAutofitHelper(int index) {
- return mHelpers.get(getChildAt(index));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement