机器人:自动缩放TextView的对话框 [英] android: auto-scaling textView in dialog

查看:153
本文介绍了机器人:自动缩放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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆