Un exemple d’utilisation :
Le cône d’hélice est sombre sur le thème, mais je veux la liste déroulante d’être clair sur le thème.
Android M
Nouveau dans Android 6.0, Spinner a maintenant l' android:popupTheme
paramètre qui permet de définir le thème utilisé pour le menu (déroulant).
Vous pouvez l'utiliser de la manière suivante:
<Spinner
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:popupTheme="@android:style/ThemeOverlay.Material.Light" />
Qui fonctionne sur les appareils exécutant API de niveau 23+, mais pas sur les périphériques exécutant la version d'Android avant.
AppCompat
C'est là que AppCompat. C'est Spinner mise en œuvre prend également en charge popupTheme
, mais c'est un peu plus compliqué pour obtenir le droit.
<Spinner
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
Après cela, vous devez mettre à jour votre Carte afin d'être en mesure de travailler avec AppCompat. Vous devez le faire en faisant mettre en œuvre le nouveau ThemedSpinnerAdapter
interface.
public class MyAdapter extends BaseAdapter implements ThemedSpinnerAdapter {
Theme getDropDownViewTheme() { ... }
void setDropDownViewTheme(Theme theme) { ... }
}
Ces méthodes sont utilisées par Spinner pour être en mesure de dire à l'Adaptateur de thème à utiliser pour gonfler tous déroulant points de vue. De faire ce aussi facile que possible, nous vous avons donné un Helper
classe, que vous pouvez brancher à votre carte.
Cela signifie que votre carte devient quelque chose comme:
public class MyAdapter extends BaseAdapter implements ThemedSpinnerAdapter {
private final ThemedSpinnerAdapter.Helper mDropDownHelper;
public MyAdapter(Context context) {
mDropDownHelper = new ThemedSpinnerAdapter.Helper(context);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null) {
// Inflate the drop down using the helper's LayoutInflater
LayoutInflater inflater = mDropDownHelper.getDropDownViewInflater();
view = inflater.inflate(R.layout.my_dropdown, parent, false);
}
// ...
return view;
}
@Override
public void setDropDownViewTheme(Theme theme) {
mDropDownHelper.setDropDownViewTheme(theme);
}
@Override
public Theme getDropDownViewTheme() {
return mDropDownHelper.getDropDownViewTheme();
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.