android: iletişim TextView'un otomatik ölçeklendirme

oy
0

Ben, iletişim içeride oto ölçekli olmak TextView ayarlamak çalışıyorum

xml

    <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

ve AutoResizeTextViewolduğu gibi

Otomatik Ölçek TextView'un Sınır içinde Fit Metin

ve daha sonra java kodunda

    AutoResizeTextView  textView = (AutoResizeTextView ) writing_dialog.findViewById(R.id.text_btn);
    textView.setText(B);

Soru:

Metin B hala çok küçük ve otomatik ölçeklendirme göründüğünü neden bilmiyorum ...

Tavsiyeniz için teşekkürler!

Oluştur 19/12/2013 saat 14:40
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

Ben inşaat büyük oto uyum metin görünümünde, bu sürümünü kullanıyorum:

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;

}

Ayrıca genişliği ayarlanır:

android:layout_width="match_parent"
Cevap 19/12/2013 saat 14:48
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more