有一天,我发现这段代码可以调整TextView中的文本大小。但是,我如何使用它并将其调用到我的项目中。我是新手:))
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;
}
答案 0 :(得分:2)
在您的布局中,除了指向TextView
课程的位置外,您可以像典型的AutoFitTextView
一样使用它。
<com.your.package.name.AutoFitTextView
android:layout_width="match_parent"
android:layout_height="wrap_content" />
在代码中:
AutoFitTextView foo = (AutoFitTextView) findViewById(id);
您真正需要做的就是在布局中使用它。如果您不在布局中使用它,请不要在您的代码中使用它。因此,要么在布局和代码中使用它,只在布局中使用它,要么根本不使用它。
此外,在您的布局中确保您正在找到正确的位置。我不知道您的AutoFitTextView
课程包含哪个包,所以我只使用com.your.package.name
作为示例。
就是这样,很容易。