comment Personnaliser l'Contextuel de la Barre d'Action à l'aide de appCompat dans la conception de matériel
MainActivity.java
J'ai mis en place MultiChoiceModeListener
dans cette classe et ci-dessous le code:
sur listView
:
listView.setMultiChoiceModeListener(MainActivity.this);
listView.setChoiceMode(listView.CHOICE_MODE_MULTIPLE_MODAL);
@Override
public boolean onActionItemClicked(ActionMode arg0, MenuItem arg1) {
switch (arg1.getItemId()) {
case R.id.save:
//Close CAB
arg0.finish();
return true;
case R.id.saveto:
//Close CAB
arg0.finish();
return true;
default:
return false;
}
}
@Override
public boolean onCreateActionMode(ActionMode arg0, Menu arg1) {
arg0.getMenuInflater().inflate(R.menu.save_menu, arg1);
return true;
}
@Override
public void onDestroyActionMode(ActionMode arg0) {
listadaptor.removeSelection();
}
@Override
public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {
return false;
}
@Override
public void onItemCheckedStateChanged(ActionMode arg0, int arg1, long arg2,
boolean arg3) {
final int checkedCount = listView.getCheckedItemCount();
arg0.setTitle(checkedCount + " "+getResources().getString(R.string.selected));
listadaptor.toggleSelection(arg1);
}
style.xml
<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/White</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionModeOverlay">true</item>
<item name="windowActionBar">false</item>
<item name="actionModeStyle">@style/LStyled.ActionMode</item>
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppTheme.Base">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
<style name="LStyled.ActionMode" parent="@style/Widget.AppCompat.ActionMode">
<item name="background">@color/colorPrimary</item>
</style>
<style name="ActionBarThemeOverlay" parent="Theme.AppCompat.Light">
<item name="android:textColorPrimary">#fff</item>
<item name="colorControlNormal">#fff</item>
<item name="colorControlHighlight">#3fff</item>
</style>
<style name="HeaderBar">
<item name="android:background">#009688</item>
<item name="android:textStyle">bold</item>
</style>
<style name="ActionBarPopupThemeOverlay" parent="ThemeOverlay.AppCompat.Light">
<item name="android:textColor">#000</item>
</style>
ci-dessous est ma captures d'écran:
vous pouvez voir les captures d'écran, dans la seconde capture d'écran, actionmode fond est blanc et la couleur du texte est blanc aussi.. je veux le changer pour les premières captures d'écran de la couleur qui est en haut.
- pouvez-vous expliquer pourquoi vous donner downvote à cette question.?
- Ne peut pas voir pourquoi le duvet est voté. Jusqu'voté.
- Avez-vous la réponse?
- ouais, ci-dessous accepté de répondre.
- Comment vous avez obtenu le titre en couleur blanc
- sa valeur par défaut.
- Cette question m'a beaucoup aidé. Maintenant, je peux mettre d'action le mode d'action de la barre et de garder setMultiChoiceModeListener
Vous devez vous connecter pour publier un commentaire.
Vous pouvez modifier la
ActionMode
arrière-plan par le biais de l'attributactionModeStyle
:Vous aurez bien sûr besoin de définir une couleur nommée
color_action_mode_bg
:Il y a d'autres choses que vous pouvez changer. Exemple:
Pour changer la couleur du texte de
SAVE
etSAVETO
, ajoutez ce qui suit àAppTheme.Base
:ActionMode
? Pouvez-vous partager ce code? Si vous utilisezstartActionMode(...)
, vous aurez besoin de le changer àstartSupportActionMode(...)
.<item name="actionModeStyle">@style/LStyled.ActionMode</item>
de<style name="AppTheme.Base"......
à<style name="AppTheme"....
.android:theme="@style/AppTheme.Base"
à votre<activity ... />
tag android manifeste. Ce test si votre activité est en effet d'obtenir le bon thème. Si cela fonctionne, nous pouvons remonter le problème réel.mode.setTitle("Select Items");
Sélectionnez les articles doivent être de couleur blanche<item name="titleTextStyle">...</item>
sousLStyled.ActionMode
. La valeur fournie àtitleTextStyle
sera un style qui hérite deTextAppearance.AppCompat.Widget.ActionMode.Title
. À l'intérieur de ce style, remplacerandroid:textColor
et l'affecter@android:color/white
.Theme.AppCompat
?utilisation actionModeBackground dans votre AppTheme.La Base de style.