summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/cyngn/theme/widget/FittedTextView.java20
-rw-r--r--src/com/cyngn/theme/widget/LatoTextView.java13
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();
+ }
}
}