MainActivity.Java
J'ai implémenté MultiChoiceModeListener
dans cette classe et voici 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 mes captures d'écran:
vous pouvez voir les deux captures d'écran, dans la deuxième capture d'écran, l'arrière-plan du mode d'action est blanc et la couleur du texte est également blanche .. je veux la changer en première couleur de capture d'écran qui est en haut.
Vous pouvez modifier l'arrière-plan ActionMode
via l'attribut actionModeStyle
:
<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
....
....
<item name="actionModeStyle">@style/LStyled.ActionMode</item>
</style>
<style name="LStyled.ActionMode" parent="@style/Widget.AppCompat.ActionMode">
<item name="background">@color/color_action_mode_bg</item>
</style>
Vous devrez bien sûr définir une couleur nommée color_action_mode_bg
:
<color name="color_action_mode_bg">#009688</color>
Il y a aussi d'autres choses que vous pouvez changer. Exemple:
<item name="titleTextStyle">...</item>
<item name="subtitleTextStyle">...</item>
<item name="height">...</item>
Pour modifier la couleur du texte de SAVE
et SAVETO
, ajoutez ce qui suit à AppTheme.Base
:
<item name="actionMenuTextColor">@color/color_action_mode_text</item>
utilisez actionModeBackground dans votre style AppTheme.Base .
<item name="actionModeBackground">@color/colorPrimary </item> (or)
<item name="Android:actionModeBackground">@color/colorPrimary </item>