2012-07-17 18 views
8

Tôi đang sử dụng một lớp AutoResizeTextView tôi tìm thấy ở đây: https://stackoverflow.com/a/5535672/371778Android Jellybean không Nhận getTextSize của AttriubteSet

này đã làm việc rất lớn cho đến khi Jellybean. Dường như JellyBean không nhận ra getTextSize() từ textView AttributeSet cho nó trả về 0.0.

Tôi đã thử tạo thuộc tính xml tùy chỉnh, nhưng tôi sử dụng kiểu để sử dụng lớp AutoResizeTextView và không thể bao gồm không gian tên tùy chỉnh trong styles.xml.

Bất kỳ ý tưởng nào về công việc xung quanh để JellyBean nhận ra phương pháp này?

Trả lời

11

Tôi đã có cùng một vấn đề và tôi chỉ giải quyết nó với một sửa chữa trong lớp AutoResizeTextView

/** 
* When text changes, set the force resize flag to true and reset the text size. 
*/ 
@Override 
protected void onTextChanged(final CharSequence text, final int start, final int before, final int after) 
{ 
    mNeedsResize = true; 
    mTextSize = getTextSize(); // I ADDED THIS 
    // Since this view may be reused, it is good to reset the text size 
    resetTextSize(); 
} 

Bây giờ nó hoạt động trên 2.3, 4.0 và 4.1 cùng. p.f.

+0

Chỉ cần thử cách này và giải quyết được vấn đề! – pandre

+0

giảm MIN_TEXT_SIZE thành 10 người đã làm việc cho tôi. // Kích thước văn bản tối thiểu cho chế độ xem văn bản này float chung tĩnh công khai MIN_TEXT_SIZE = 10; –

0

Tôi đã gặp sự cố liên quan đến Phát trực tuyến. Trên một video trực tuyến khi tôi đã cố gắng đi fwd và bwd, tôi đã thấy một khởi động lại.

4

Mã trên hoạt động, nhưng sự cố xảy ra khi AutoResizeTextView sẽ được sử dụng lại. Ví dụ trong ListView. Sau khi mở rộng một mục trong danh sách, một số mục bên dưới có thể cũng nhỏ hơn một cách không cần thiết. Trong trường hợp này, phương thức onTextChanged sẽ trông giống như:

@Override 
protected void onTextChanged(final CharSequence text, final int start, final int before, final int after) 
{ 
    needsResize = true; 
    if (before == after) 
     textSize = getTextSize(); 
    else 
     resetTextSize(); // Since this view may be reused, it is good to reset the text size  
}