Android
Thema, Stil, Attribut
Suche…
Benutzerdefiniertes Design global verwenden
In themes.xml:
<style name="AppTheme" parent="Theme.AppCompat">
<!-- Theme attributes here -->
</style>
In AndroidManifest.xml:
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<!-- Activity declarations here -->
</application>
Definieren Sie primäre, primäre dunkle und Akzentfarben
Sie können die Farbpalette Ihres Themas anpassen.
Framework- APIs verwenden
<style name="AppTheme" parent="Theme.Material">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<item name="android:colorAccent">@color/accent</item>
</style>
Verwenden der Appcompat-Unterstützungsbibliothek (und AppCompatActivity
)
<style name="AppTheme" parent="Theme.AppCompat">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
Verwenden Sie ein benutzerdefiniertes Thema pro Aktivität
In themes.xml:
<style name="MyActivityTheme" parent="Theme.AppCompat">
<!-- Theme attributes here -->
</style>
In AndroidManifest.xml:
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat">
<activity
android:name=".MyActivity"
android:theme="@style/MyActivityTheme" />
</application>
Overscroll-Farbe (API 21+)
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:colorEdgeEffect">@color/my_color</item>
</style>
Wellenfarbe (API 21+)
Die Welligkeitsanimation wird angezeigt, wenn der Benutzer auf anklickbare Ansichten drückt.
Sie können dieselbe Ripple-Farbe verwenden, die von Ihrer App verwendet wird, indem ?android:colorControlHighlight
in Ihren Ansichten das ?android:colorControlHighlight
. Sie können diese Farbe anpassen, indem Sie das Attribut android:colorControlHighlight
in Ihrem android:colorControlHighlight
ändern:
Diese Effektfarbe kann geändert werden:
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:colorControlHighlight">@color/my_color</item>
</style>
Oder, wenn Sie ein Materialdesign verwenden:
<style name="AppTheme" parent="android:Theme.Material.Light">
<item name="android:colorControlHighlight">@color/your_custom_color</item>
</style>
Lichtstatusleiste (API 23+)
Dieses Attribut kann den Hintergrund der Statussymbole (oben auf dem Bildschirm) in Weiß ändern.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowLightStatusBar">true</item>
</style>
Transluzente Navigations- und Statusleisten (API 19+)
Die Navigationsleiste (am unteren Rand des Bildschirms) kann transparent sein. Hier ist der Weg, um es zu erreichen.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowTranslucentNavigation">true</item>
</style>
Die Statusleiste (oben auf dem Bildschirm) kann transparent gemacht werden, indem dieses Attribut auf den Stil angewendet wird:
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowTranslucentStatus">true</item>
</style>
Farbe der Navigationsleiste (API 21+)
Dieses Attribut wird verwendet, um die Navigationsleiste zu ändern (eine, die die Schaltfläche Zurück, Startseite zuletzt) enthält. Normalerweise ist es schwarz, die Farbe kann jedoch geändert werden.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:navigationBarColor">@color/my_color</item>
</style>
Thema Vererbung
Bei der Definition von Themen verwendet man normalerweise das vom System bereitgestellte Thema und ändert dann das Erscheinungsbild an seine eigene Anwendung. So wird beispielsweise das Theme.AppCompat
vererbt:
<style name="AppTheme" parent="Theme.AppCompat">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Dieses Theme.AppCompat
verfügt jetzt über alle Eigenschaften des Standarddesigns Theme.AppCompat
, außer denjenigen, die wir explizit geändert haben.
Es gibt auch eine Abkürzung beim Erben, die normalerweise verwendet wird, wenn man von seinem eigenen Thema erbt:
<style name="AppTheme.Red">
<item name="colorAccent">@color/red</item>
</style>
Da hat es bereits AppTheme.
Am Anfang wird der Name automatisch erben, ohne dass das parent
Design definiert werden muss. Dies ist nützlich, wenn Sie bestimmte Stile für einen Teil (z. B. eine einzelne Aktivität) Ihrer App erstellen müssen.
Mehrere Themes in einer App
Wenn Sie mehr als ein Thema in Ihrer Android-Anwendung verwenden, können Sie jedem Thema eigene Farben hinzufügen.
Zuerst müssen wir unsere Designs wie style.xml
zu style.xml
hinzufügen:
<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
<!-- -->
<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >
</style>
......
Oben sehen Sie OneTheme und TwoTheme .
Nun gehen Sie zu Ihrem AndroidManifest.xml
und fügen Sie diese Zeile: android:theme="@style/OneTheme"
auf Ihre Bewerbung Tag, wird dies das Standard - Theme machen OneTheme:
<application
android:theme="@style/OneTheme"
...>
Erstellen Sie eine neue XML-Datei namens attrs.xml
und fügen Sie diesen Code hinzu:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="custom_red" format="color" />
<attr name="custom_blue" format="color" />
<attr name="custom_green" format="color" />
</resources>
<!-- add all colors you need (just color's name) -->
Gehen Sie zurück zu style.xml
und fügen Sie diese Farben mit den Werten für jedes Thema hinzu:
<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="custom_red">#8b030c</item>
<item name="custom_blue">#0f1b8b</item>
<item name="custom_green">#1c7806</item>
</style>
<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >
<item name="custom_red">#ff606b</item>
<item name="custom_blue">#99cfff</item>
<item name="custom_green">#62e642</item>
</style>
Jetzt haben Sie benutzerdefinierte Farben für jedes Thema. Lassen Sie uns diese Farben in unseren Ansichten einfügen.
Fügen Sie der TextView- Farbe mit "? Attr /" die Farbe custom_blue hinzu:
Gehen Sie zu Ihrem imageView und fügen Sie diese Farbe hinzu:
<TextView>
android:id="@+id/txte_view"
android:textColor="?attr/custom_blue" />
Mow, wir können das Thema nur durch eine einzelne Zeile setTheme(R.style.TwoTheme);
Diese Zeile muss vor der setContentView()
-Methode in der onCreate()
-Methode wie dieser Activity.java
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.TwoTheme);
setContentView(R.layout.main_activity);
....
}
Ändern Sie das Thema für alle Aktivitäten gleichzeitig
Wenn Sie das Thema für alle Aktivitäten ändern möchten, müssen Sie eine neue Klasse mit dem Namen MyActivity erstellen, die die AppCompatActivity
Klasse (oder Activity
Klasse) erweitert und die Zeile setTheme(R.style.TwoTheme);
hinzufügt setTheme(R.style.TwoTheme);
zu onCreate () - Methode:
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (new MySettings(this).isDarkTheme())
setTheme(R.style.TwoTheme);
}
}
Gehen Sie schließlich zu all Ihren Aktivitäten und fügen Sie alle dazu aus, die MyActivity- Basisklasse zu erweitern:
public class MainActivity extends MyActivity {
....
}
Um das Thema zu ändern, wechseln Sie einfach zu MyActivity und ändern Sie R.style.TwoTheme
in Ihr Thema ( R.style.OneTheme
, R.style.ThreeTheme
....).