Was ist der Unterschied zwischen den Attributen style und android:textAppearance von TextView?

Lesezeit: 3 Minuten

Benutzeravatar von Miro Kropacek
Miro Kropacek

Wenn ich meine definiere TextView als:

 <TextView
        style="@android:style/TextAppearance.DeviceDefault.Large"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

es ist im Grunde dasselbe wie zu tun:

 <TextView
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

ich weiß, dass style ist eine Art breiterer Qualifizierer (d.h. man kann nicht alle Attribute setzen android:textAppearance), aber dann stellt sich die Frage: Warum sich die Mühe machen? Gibt es einen Vorteil bei der Verwendung android:textAppearance über style?

Benutzeravatar von onmyway133
onmyway133

Von Stilen und Themen https://developer.android.com/guide/topics/ui/look-and-feel/themes#textappearance

Eine Einschränkung bei Stilen besteht darin, dass Sie nur einen Stil auf eine Ansicht anwenden können. In einem TextView können Sie aber auch ein TextAppearance-Attribut angeben, das ähnlich wie ein Style funktioniert

Mit TextAppearance können Sie textspezifische Stile definieren, während der Stil einer Ansicht für andere Zwecke verfügbar bleibt. Beachten Sie jedoch, dass, wenn Sie Textattribute direkt in der Ansicht oder in einem Stil definieren, diese Werte die TextAppearance-Werte überschreiben würden.

Es scheint, dass Stil ein Attribut für alle Ansichten ist, selbst TextView und TextAppearance wenden nur einige “Stilkomponenten” an, die nur für Texte verfügbar sind. Sie können in beiden mithilfe von styles.xml Ihre eigenen Stile anwenden

https://developer.android.com/guide/topics/resources/style-resource.html
https://developer.android.com/reference/android/R.attr.html#textAppearance

Textaussehen

Standarddarstellung von Text: Farbe, Schriftart, Größe und Stil.

Stil

Dies gilt für alles

Sie können Styles mit TextAppearance kombinieren.
Beispielsweise legen Sie in TextAppearance die gesamte textbezogene Logik für eine Schaltfläche fest.
In einem Stil können Sie ihn wiederverwenden und zusätzliche Attribute wie Polsterung, Größe usw. hinzufügen.

Zum Beispiel,

<style name="TextAppearanceTitle" parent="TextAppearance.MaterialComponents.Button">
    <item name="android:textColor">#f0f</item>
</style>

<style name="SomeButtonStyle" parent="Widget.MaterialComponents.Button.UnelevatedButton">
    <item name="android:textAppearance">@style/TextAppearanceTitle</item>
    <item name="android:padding">12dp</item>
    <item name="android:elevation">4dp</item>
</style>

Es könnte für jemanden nützlich sein, hier ist die Liste der unterstützten Attribute für die TextAppearance von TextView:

<attr name="textColor" />
<attr name="textSize" />
<attr name="textStyle" />
<attr name="typeface" />
<attr name="fontFamily" />
<attr name="textColorHighlight" />
<attr name="textColorHint" />
<attr name="textColorLink" />
<attr name="textAllCaps" format="boolean" />
<attr name="shadowColor" format="color" />
<attr name="shadowDx" format="float" />
<attr name="shadowDy" format="float" />
<attr name="shadowRadius" format="float" />
<attr name="elegantTextHeight" format="boolean" />
<attr name="letterSpacing" format="float" />
<attr name="fontFeatureSettings" format="string" />

Alle übrigen Sachen, die Sie in einem Style festlegen.

  • warum ist autosize kein teil von textappearance? es sollte auf Text bezogen werden

    – htafoya

    29. Juli 2022 um 18:02 Uhr

Sie können nur ein Stilattribut pro Ansicht haben, aber die Verwendung von TextAppearance ermöglicht es Ihnen im Wesentlichen, einen Stil unter Verwendung des eingeschränkten Satzes von textrelevanten Attributen zu definieren. Sie können sowohl einen Stil als auch eine TextAppearance in einer Ansicht verwenden.

1443090cookie-checkWas ist der Unterschied zwischen den Attributen style und android:textAppearance von TextView?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy