2012-07-17 4 views
8

ich eine Klasse bin Verwendung AutoResizeTextView ich hier gefunden: https://stackoverflow.com/a/5535672/371778Android JellyBean nicht getTextSize von AttriubteSet Erkenntnis

Dieser große, bis JellyBean gearbeitet hat. Es scheint, dass JellyBean getTextSize() aus dem textView AttributeSet nicht erkennt, da es 0.0 zurückgibt.

Ich habe versucht, eine benutzerdefinierte XML-Attribute zu erstellen, aber ich verwende Stile, um die AutoResizeTextView-Klasse zu verwenden, und kann keinen benutzerdefinierten Namespace in styles.xml enthalten.

Irgendeine Idee von einer Arbeit um JellyBean zu bekommen, diese Methode zu erkennen?

Antwort

11

Ich habe das gleiche Problem hatte und ich löste es nur mit einem Update in der AutoResizeTextView Klasse

/** 
* 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(); 
} 

Jetzt funktioniert es auf 2.3, 4.0 und 4.1 gleich. p.f.

+0

Probieren Sie dies einfach aus und es löst das Problem! – pandre

+0

Reduzierung von MIN_TEXT_SIZE auf 10 arbeitete für mich. // Mindesttextgröße für diese Textansicht public static final float MIN_TEXT_SIZE = 10; –

0

Ich hatte ein Problem in Bezug auf Streaming gesehen. Bei einem Streaming-Video, als ich versucht habe, fwd und bwd zu gehen, hatte ich einen Neustart gesehen.

4

Der obige Code funktioniert, aber Probleme treten auf, wenn AutoResizeTextView erneut verwendet wird. Zum Beispiel in der ListView. Nach dem Skalieren eines Eintrags auf der Liste könnten einige Einträge darunter auch unnötig kleiner sein. In diesem Fall sollte die onTextChanged-Methode wie folgt aussehen:

@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  
} 
Verwandte Themen