Android
Thema, stijl, kenmerk
Zoeken…
Gebruik aangepast thema wereldwijd
In thema.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>
Definieer primaire, primaire donkere en accentkleuren
U kunt het kleurenpalet van uw thema aanpassen.
Framework- API's gebruiken
<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>
Gebruik van de Appcompat-ondersteuningsbibliotheek (en 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>
Gebruik aangepast thema per activiteit
In thema.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 Color (API 21+)
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:colorEdgeEffect">@color/my_color</item>
</style>
Ripple Color (API 21+)
De rimpelanimatie wordt weergegeven wanneer de gebruiker op klikbare weergaven drukt.
U kunt in uw weergaven ?android:colorControlHighlight
gebruiken die door uw app wordt gebruikt door de ?android:colorControlHighlight
toe te wijzen. Je kunt deze kleur aanpassen door het kenmerk android:colorControlHighlight
in je thema te wijzigen:
Deze effectkleur kan worden gewijzigd:
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:colorControlHighlight">@color/my_color</item>
</style>
Of, als u een Materieel Thema gebruikt:
<style name="AppTheme" parent="android:Theme.Material.Light">
<item name="android:colorControlHighlight">@color/your_custom_color</item>
</style>
Lichtstatusbalk (API 23+)
Dit kenmerk kan de achtergrond van de statusbalkpictogrammen (boven aan het scherm) in wit veranderen.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowLightStatusBar">true</item>
</style>
Doorzichtige navigatie- en statusbalken (API 19+)
De navigatiebalk (onderaan het scherm) kan transparant zijn. Hier is de manier om het te bereiken.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowTranslucentNavigation">true</item>
</style>
De statusbalk (boven aan het scherm) kan transparant worden gemaakt door dit kenmerk toe te passen op de stijl:
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowTranslucentStatus">true</item>
</style>
Navigatiebalkkleur (API 21+)
Dit kenmerk wordt gebruikt om de navigatiebalk te wijzigen (een die de knop Terug, Home Recent bevat). Meestal is het zwart, maar de kleur kan worden gewijzigd.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:navigationBarColor">@color/my_color</item>
</style>
Thema-erfenis
Bij het definiëren van thema's gebruikt men meestal het thema dat door het systeem wordt geboden, en vervolgens wordt het uiterlijk aangepast aan zijn eigen toepassing. Dit is bijvoorbeeld hoe het thema Theme.AppCompat
wordt overgenomen:
<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>
Dit thema heeft nu alle eigenschappen van het standaardthema Theme.AppCompat
, behalve degene die we expliciet hebben gewijzigd.
Er is ook een snelkoppeling bij het erven, meestal gebruikt wanneer iemand erft van zijn eigen thema:
<style name="AppTheme.Red">
<item name="colorAccent">@color/red</item>
</style>
Omdat het al AppTheme.
aan het begin van de naam neemt het het automatisch over, zonder dat het parent
thema hoeft te worden gedefinieerd. Dit is handig wanneer u specifieke stijlen voor een onderdeel (bijvoorbeeld een enkele activiteit) van uw app moet maken.
Meerdere thema's in één app
Met behulp van meer dan één thema in uw Android-applicatie, kunt u aangepaste kleuren toevoegen aan elk thema, als volgt:
Eerst moeten we onze thema's als volgt aan style.xml
toevoegen:
<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
<!-- -->
<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >
</style>
......
Hierboven zie je OneTheme en TwoTheme .
Ga nu naar je AndroidManifest.xml
en voeg deze regel: android:theme="@style/OneTheme"
aan je applicatie- tag, dit zal OneTheme het standaardthema maken:
<application
android:theme="@style/OneTheme"
...>
Maak een nieuw xml-bestand met de naam attrs.xml
en voeg deze code toe:
<?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) -->
Ga terug naar style.xml
en voeg deze kleuren toe met de waarden voor elk thema:
<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>
Nu hebben we aangepaste kleuren voor elk thema, laten we deze kleur toevoegen aan onze weergaven.
Voeg custom_blue kleur toe aan de TextView met behulp van "? Attr /":
Ga naar je afbeelding Bekijk en voeg deze kleur toe:
<TextView>
android:id="@+id/txte_view"
android:textColor="?attr/custom_blue" />
Mow we kunnen het thema alleen veranderen door een enkele regel setTheme(R.style.TwoTheme);
Deze regel moet vóór setContentView()
methode onCreate()
methode, zoals deze Activity.java
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.TwoTheme);
setContentView(R.layout.main_activity);
....
}
verander het thema voor alle activiteiten tegelijk
Als we het thema voor alle activiteiten willen wijzigen, moeten we een nieuwe klasse maken met de naam MyActivity breidt de AppCompatActivity
klasse (of Activity
) uit en voegt setTheme(R.style.TwoTheme);
naar de methode onCreate () :
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (new MySettings(this).isDarkTheme())
setTheme(R.style.TwoTheme);
}
}
Ga ten slotte naar al uw activiteiten toevoegen en zorg dat ze allemaal de MyActivity- basisklasse uitbreiden:
public class MainActivity extends MyActivity {
....
}
Om het thema te veranderen, ga je gewoon naar MyActivity en verander R.style.TwoTheme
in je thema ( R.style.OneTheme
, R.style.ThreeTheme
....).