机器人:自动缩放TextView的对话框 [英] android: auto-scaling textView in dialog
本文介绍了机器人:自动缩放TextView的对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想设置TextView的是自动缩放的对话框里面,
I am trying to set the TextView to be auto scale inside the dialog,
<com.abc.abc.AutoResizeTextView
android:id="@+id/text_btn"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_above="@+id/view2"
android:layout_alignLeft="@+id/linear_layout_color1"
android:layout_alignRight="@+id/linear_layout_color1"
android:layout_alignTop="@+id/doodleView"
android:layout_margin="1dp"
android:background="@color/white"
android:gravity="center"
android:text="A"
android:textColor="@color/grey" />
AutoResizeTextView
和 AutoResizeTextView
在
<一个href=\"http://stackoverflow.com/questions/5033012/auto-scale-textview-text-to-fit-within-bounds?lq=1\">Auto大规模的TextView文本边界内适合
AutoResizeTextView textView = (AutoResizeTextView ) writing_dialog.findViewById(R.id.text_btn);
textView.setText("B");
问:
我不知道为什么文本B的出现还是非常小的,而不是自动缩放...
Question:
I do not know why the text B is still appearing very small and not auto-scaling...
谢谢你的建议!
推荐答案
我使用这个版本自动调整文本视图,它的伟大工程的:
I am using this version of auto fit text view, which works great:
public class AutoFitTextView extends TextView {
public AutoFitTextView(Context context) {
super(context);
init();
}
public AutoFitTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
maxTextSize = this.getTextSize();
if (maxTextSize < 35) {
maxTextSize = 30;
}
minTextSize = 20;
}
private void refitText(String text, int textWidth) {
if (textWidth > 0) {
int availableWidth = textWidth - this.getPaddingLeft()
- this.getPaddingRight();
float trySize = maxTextSize;
this.setTextSize(TypedValue.COMPLEX_UNIT_PX, trySize);
while ((trySize > minTextSize)
&& (this.getPaint().measureText(text) > availableWidth)) {
trySize -= 1;
if (trySize <= minTextSize) {
trySize = minTextSize;
break;
}
this.setTextSize(TypedValue.COMPLEX_UNIT_PX, trySize);
}
this.setTextSize(TypedValue.COMPLEX_UNIT_PX, trySize);
}
}
@Override
protected void onTextChanged(final CharSequence text, final int start,
final int before, final int after) {
refitText(text.toString(), this.getWidth());
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
if (w != oldw) {
refitText(this.getText().toString(), w);
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
refitText(this.getText().toString(), parentWidth);
}
public float getMinTextSize() {
return minTextSize;
}
public void setMinTextSize(int minTextSize) {
this.minTextSize = minTextSize;
}
public float getMaxTextSize() {
return maxTextSize;
}
public void setMaxTextSize(int minTextSize) {
this.maxTextSize = minTextSize;
}
private float minTextSize;
private float maxTextSize;
}
也将宽度设置为:
also set the width to:
android:layout_width="match_parent"
这篇关于机器人:自动缩放TextView的对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文