diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/cyngn/theme/widget/FittedTextView.java | 20 | ||||
-rw-r--r-- | src/com/cyngn/theme/widget/LatoTextView.java | 13 |
2 files changed, 28 insertions, 5 deletions
diff --git a/src/com/cyngn/theme/widget/FittedTextView.java b/src/com/cyngn/theme/widget/FittedTextView.java index 78e6a16..fbe1489 100644 --- a/src/com/cyngn/theme/widget/FittedTextView.java +++ b/src/com/cyngn/theme/widget/FittedTextView.java @@ -18,15 +18,14 @@ import android.widget.TextView; */ public class FittedTextView extends TextView { private Paint mPaint; + private boolean mAutoFitText = true; public FittedTextView(Context context) { - super(context); - mPaint = new Paint(); + this(context, null); } public FittedTextView(Context context, AttributeSet attrs) { - super(context, attrs); - mPaint = new Paint(); + this(context, attrs, 0); } public FittedTextView(Context context, AttributeSet attrs, int defStyle) { @@ -34,9 +33,19 @@ public class FittedTextView extends TextView { mPaint = new Paint(); } + protected void setAutoFitText(boolean autoFit) { + mAutoFitText = autoFit; + } + + protected boolean getAutoFitText() { + return mAutoFitText; + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); + if (!mAutoFitText) return; + final float THRESHOLD = 0.5f; final float TARGET_WIDTH = getMeasuredWidth(); String text = getText().toString(); @@ -46,6 +55,9 @@ public class FittedTextView extends TextView { } mPaint.set(getPaint()); + //If it fits as is, don't touch it + if (mPaint.measureText(text) <= TARGET_WIDTH) return; + float max = 200; float min = 2; while(max > min) { diff --git a/src/com/cyngn/theme/widget/LatoTextView.java b/src/com/cyngn/theme/widget/LatoTextView.java index fe39e5c..2da46a8 100644 --- a/src/com/cyngn/theme/widget/LatoTextView.java +++ b/src/com/cyngn/theme/widget/LatoTextView.java @@ -10,6 +10,7 @@ import android.content.res.TypedArray; import android.graphics.Typeface; import android.util.AttributeSet; import android.widget.TextView; +import com.cyngn.theme.chooser.R; import com.cyngn.theme.util.Utils; import java.io.File; @@ -17,7 +18,7 @@ import java.io.File; /** * A custom TextView that always uses the Lato font */ -public class LatoTextView extends TextView { +public class LatoTextView extends FittedTextView { private static final int NUM_TYPEFACE_PER_FAMILY = 4; private static final String FONT_ASSSET_DIR = "fonts"; @@ -135,6 +136,16 @@ public class LatoTextView extends TextView { } setTypefaceFromAttrs(fontFamily, styleIndex); + TypedArray styledAttrs = context.obtainStyledAttributes(attrs, + R.styleable.FittedTextView, 0, 0); + try { + //Although we extend FittedTextView, we don't want all instances to auto fit the + //text, so we check if autoFitText has been set in the attributes. Default to false + boolean fit = styledAttrs.getBoolean(R.styleable.FittedTextView_autoFitText, false); + setAutoFitText(fit); + } finally { + styledAttrs.recycle(); + } } } |