फोन कर रहा हूँ आप TextView
कह सकते हैं के बाद से वर्ग TextView
फैली हुई है, AutoResizeTextView test
कॉल करने के लिए की जरूरत नहीं है। मुझे नहीं लगता कि आपको resizeText()
पर कॉल करने की आवश्यकता क्यों होगी।
किसी भी तरह से, यहां एक कस्टम क्लास है जिसे मैं ऑटो री-साइज टेक्स्ट में उपयोग करना पसंद करता हूं।
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;
}
मैं किसी अन्य वर्ग के माध्यम से फोन कर रहा हूँ तो मैं फोन करने के लिए टीटी मैं सही हूँ की ज़रूरत है? क्या मुझे यह चाहिए कि लेआउट xml n को कस्टम क्लास का उपयोग हेडर के रूप में करना है? – user1235085
बीटीडब्ल्यू आपके कोड मेरे लिए पूरी तरह से काम करता है धन्यवाद :) – user1235085
ऐसा लगता है जैसे आपको यह मिला, लेकिन स्पष्ट होना; आप 'टेक्स्ट व्यू' के स्थान पर अपने एक्सएमएल में कस्टम क्लास जोड़ते हैं, फिर अपने कोड में आप इसे सामान्य 'टेक्स्ट व्यू' की तरह संदर्भित करते हैं। – adneal