public void setTextAppearance (Kontextkontext, int resId) Hinzugefügt in API-Ebene 1
Diese Methode war in API-Ebene 23 veraltet. Verwenden Sie stattdessen setTextAppearance(int).
Meine Frage: Warum ist es veraltet? Warum es nicht braucht Context mehr? Und vor allem, wie man es benutzt setTextAppearance(int resId) für ältere Versionen?
Sie können das für ältere Versionen einfach überprüfen Build.VERSION.SDK_INT das wäre
– Pankaj
7. November 2015 um 10:54 Uhr
RustamG
Sie können verwenden TextViewCompat aus der support/androidX-Bibliothek:
import android.support.v4.widget.TextViewCompat // for support-library
import androidx.core.widget.TextViewCompat // for androidX library
// ...
TextViewCompat.setTextAppearance(view, resId)
Intern erhält es den Kontext aus der Ansicht (view.getContext()) auf API < 23.
Ich erstelle TextViews mit TextView(context) und ich habe versucht, zu TextViewCompat zu wechseln, und es hat keinen öffentlichen Konstruktor, und ich kann die neu erstellte TextView nicht umwandeln und auf diese Weise verwenden. Wie verwenden Sie (androidx) TextViewCompat, wenn Sie Textansichten programmgesteuert erstellen?
– Francisc0
15. August 2019 um 14:22 Uhr
für Buttons gibt es AppCompatButton und setTextAppearance(context, resId)
– 10101101
17. Oktober 2019 um 13:04 Uhr
Henry
wie benutzt man setTextAppearance(int resId) für ältere Versionen?
Weitere Informationen: https://stackoverflow.com/a/33393762/4747587
Warum wurde es verworfen? Warum braucht es keinen Kontext mehr?
Der Grund, warum es veraltet ist, ist, dass keine Notwendigkeit besteht, a zu übergeben context. Es verwendet den von der bereitgestellten Standardkontext View. Sehen Sie sich den Quellcode unten an. Das sollte es erklären.
public void setTextAppearance(@StyleRes int resId) {
setTextAppearance(mContext, resId);
}
Das mContext hier ist in der definiert View Klasse. Sie brauchen also nicht a weiterzugeben Context zu dieser Methode nicht mehr. Das TextView verwendet den Kontext, der ihm während seiner Erstellung bereitgestellt wurde. Das macht mehr Sinn.
AKTUALISIEREN
Diese Funktionalität wird als Teil der Support-Bibliothek hinzugefügt. Also statt TextViewverwenden TextViewCompat [documentation]. Es werden auch andere Klassen eingeführt, wie z ImageViewCompat.
Das ist schrecklich, warum zum Teufel haben sie setTextAppearance nicht als Teil der ContextCompat-Klasse hinzugefügt? Jetzt müssen wir alle unsere setTextAppearance-Methoden umschließen oder das Risiko eingehen, dass veralteter Code in unserem Client-Code fehlschlägt.
– hat funktioniert
10. Januar 2016 um 20:07 Uhr
@worked siehe meine Antwort: stackoverflow.com/a/37028325/2613692 Sie haben die Methode zur TextViewCompat-Klasse hinzugefügt, bevor diese Frage gepostet wurde.
– RustamG
26. Juli 2016 um 10:34 Uhr
Nett! Danke @RustamG
– hat funktioniert
5. November 2016 um 1:19 Uhr
Die obige Antwort ist richtig – hier ist auch ein anderer Weg. In Kotlin habe ich eine Erweiterung geschrieben, die das Leben einfacher macht, wenn man Support leistet SDK 23 und unten sowie oben.
fun TextView.setAppearance(context: Context, res: Int) {
if (Build.VERSION.SDK_INT < 23) {
setTextAppearance(context, res)
} else {
setTextAppearance(res)
}
}
11763900cookie-checksetTextAppearance in API-Ebene 23 veraltetyes
Sie können das für ältere Versionen einfach überprüfen
Build.VERSION.SDK_INT
das wäre– Pankaj
7. November 2015 um 10:54 Uhr