2
Je veux avoir un thème de dialogue d'activité sombre, donc je définis ci-dessous:thème de dialogue d'activité sombre ne fonctionne pas
<style name="AppThemeDialogActivityDark" parent="Theme.AppCompat.Dialog">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- dark toolbar + dark popup menu -->
<item name="toolbarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
<!-- trying to forcefully set the background and text color -->
<item name="android:windowBackground">@android:color/background_dark</item>
<item name="android:textColor">@color/white</item>
<item name="android:minWidth">320dp</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>
Activité:
public class FeedbackActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
// darkTheme returns true!!!
setTheme(MainApp.getPrefs().darkTheme() ? R.style.AppThemeDialogActivityDark : R.style.AppThemeDialogActivity);
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_feedback);
}
}
Mise en page:
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp"
app:theme="?toolbarTheme"/>
<ListView
android:padding="12dp"
android:id="@+id/lvFeedback"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ScrollView
android:id="@+id/svFeedback"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="0dp">
<TextView
android:padding="12dp"
android:id="@+id/tvFeedback"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</ScrollView>
<Button
android:padding="12dp"
android:id="@+id/btButton"
style="?borderlessButtonStyle"
android:elevation="4dp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</layout>
Qu'est-ce que suis-je manquant ici? Pourquoi mon dialogue d'activité a-t-il un fond blanc à la place du sombre?
EDIT - Des détails
- Réglage des arrière-plans de vue sur
android:background="?android:windowBackground"
fonctionne. Mais je dois le faire pour le ListView et pour le TextView. Que cet attribut de thème fonctionne signifie, le thème est appliqué correctement, semble que l'arrière-plan par défaut est défini dans un autre attribut de thème dans un thème de dialogue? - mes articles
ListView
ont un thème correct aussi bien en utilisant simplementandroid.R.layout.simple_list_item_1
comme mise en page, je n'ai pas besoin de définir leurs couleurs d'arrière-plan/texte, ils sont correctement orientés pour un thème sombre, mais pas visible si je ne définis pasListView
arrière-plan manuellement comme ci-dessus
Vous devriez vérifier votre dossier valeurs-Vxx et voir les fichiers de style en eux. peut-être que pour certains d'entre eux le style est différent de ce dont vous avez besoin. Aussi, vous devriez vérifier votre fichier de mise en page et voir si elles utilisent un style spécifié de votre fichier de styles ou non. – Merka
c'est une bonne idée, mais je suis assez fainéant créer des styles spéciaux pour différentes tailles d'écran et vérifié cela maintenant et ce n'est pas le cas – prom85
Et j'ai ajouté ma mise en page xml, je ne suis pas la couleur de fond manuellement. Et je ne mets aucune couleur dans le code, l'activité est une activité très simple avec quelques lignes de code seulement – prom85