android - studio - Cómo personalizar la barra de acción contextual usando appCompat en diseño de materiales
personalizar toolbar android studio (3)
Para cambiar el color del título de la barra de acción contextual, este fue el único método que me funcionó:
Escribe esto en el tema de tu actividad
<item name="actionModeStyle">@style/ContextualActionModeTheme</item>
Definir los estilos.
<style name="ContextualActionModeTheme" parent="@style/Widget.AppCompat.ActionMode"> <item name="titleTextStyle">@style/titleColor</item> </style> <style name="titleColor" parent="TextAppearance.AppCompat.Widget.ActionMode.Title"> <item name="android:textColor">@color/your_color_here</item> </style>
El color del título de su barra de acción contextual se cambiaría.
MainActivity.java
He implementado
MultiChoiceModeListener
en esta clase y debajo está el código:
en
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>
a continuación se muestran mis capturas de pantalla:
puede ver ambas capturas de pantalla, en la segunda captura de pantalla, el fondo del modo de acción es blanco y el color del texto también es blanco. Quiero cambiarlo al color de las primeras capturas de pantalla que está en la parte superior.
Puede cambiar el fondo de
ActionMode
través del atributo
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>
Por supuesto, deberá definir un color llamado
color_action_mode_bg
:
<color name="color_action_mode_bg">#009688</color>
Hay otras cosas que también puedes cambiar. Ejemplo:
<item name="titleTextStyle">...</item>
<item name="subtitleTextStyle">...</item>
<item name="height">...</item>
Para cambiar el color del texto de
SAVE
y
SAVETO
, agregue lo siguiente a
AppTheme.Base
:
<item name="actionMenuTextColor">@color/color_action_mode_text</item>
use actionModeBackground en su estilo AppTheme.Base .
<item name="actionModeBackground">@color/colorPrimary </item> (or)
<item name="android:actionModeBackground">@color/colorPrimary </item>