Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android:在对话框中自动缩放文本视图_Android_Textview_Autoscaling - Fatal编程技术网

android:在对话框中自动缩放文本视图

android:在对话框中自动缩放文本视图,android,textview,autoscaling,Android,Textview,Autoscaling,我试图在对话框中将TextView设置为自动缩放 xml 问题: 我不知道为什么文本B仍然看起来很小,并且没有自动缩放 谢谢你的建议 我正在使用这个版本的auto-fit text view,它非常有效: public class AutoFitTextView extends TextView { public AutoFitTextView(Context context) { super(context); init(); } p

我试图在对话框中将TextView设置为自动缩放

xml 问题: 我不知道为什么文本B仍然看起来很小,并且没有自动缩放


谢谢你的建议

我正在使用这个版本的auto-fit text view,它非常有效:

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;

}

我遵循了你建议的编码,但仍然不起作用=(我想问:它是在对话框中工作还是需要进一步修改?我从未在对话框中使用过它…只在列表视图单元格或标准布局中使用过它。。。
    AutoResizeTextView  textView = (AutoResizeTextView ) writing_dialog.findViewById(R.id.text_btn);
    textView.setText("B");
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;

}
android:layout_width="match_parent"