titulo studio nombre icono color cambiar barra bar agregar android android-actionbar android-3.0-honeycomb android-actionmode

studio - cambiar color barra de titulo android



¿Cómo puedo personalizar el color y el texto del Modo Acción? (8)

El modo de acción predeterminado (3.0 y superior) viene con un tema verde y un botón "Hecho" en el lado izquierdo. ¿Cómo puedo personalizar estos?

Gracias


Aquí está mi enfoque con el código Java:

private void customizeActionModeCloseButton(String title, int iconID) { int buttonId = Resources.getSystem().getIdentifier("action_mode_close_button", "id", "android"); View v = findViewById(buttonId); if (v == null) { buttonId = R.id.abs__action_mode_close_button; v = findViewById(buttonId); } if (v == null) return; LinearLayout ll = (LinearLayout) v; if (ll.getChildCount() > 1 && ll.getChildAt(1) != null) { //custom icon ImageView img = (ImageView) ll.getChildAt(0); img.setImageResource(iconID); //custom text TextView tv = (TextView) ll.getChildAt(1); tv.setText(title); tv.setTextColor(Color.WHITE); } }


Aquí hay una solución AppCompat (es decir, usando startSupportActionMode) para personalizar temporalmente (personalizar) la imagen del botón CAB hecho. Temporalmente, ya que es conveniente volver a cambiarlo para usar su imagen típica, de modo que cuando se active la selección de texto se vea apropiado.

https://gist.github.com/coreform/36ed98f98668f2e90c6a


Este es el estilo utilizado para cualquier ActionMode, lo saqué del SDK. Tendrá que crear su propio estilo para personalizarlo. Es muy fácil de hacer. Si nunca has hecho algo como esto antes, deberías leer esta publicación sobre la personalización de la barra de acción. Explica todo lo que necesitas saber.

<style name="Widget.ActionMode"> <item name="android:background">?android:attr/actionModeBackground</item> <item name="android:backgroundSplit">?android:attr/actionModeSplitBackground</item> <item name="android:height">?android:attr/actionBarSize</item> <item name="android:titleTextStyle">@android:style/TextAppearance.Widget.ActionMode.Title</item> <item name="android:subtitleTextStyle">@android:style/TextAppearance.Widget.ActionMode.Subtitle</item> </style>


Realmente no puedes personalizarlo de esta manera porque el atributo actionModeStyle se introduce en el nivel 14 de API. Para los niveles de API 11 a 13 no tienes suerte.

Para el nivel de API 14, puede cambiar el estilo configurando android: actionModeStyle en su tema.


Respuesta actualizada para los dispositivos anteriores y posteriores a Lollipop. Debe eliminar el prefijo de android: para que funcione en dispositivos Lollipop +, así:

styles.xml:

<style name="Widget.ActionMode"> <item name="android:background">?android:attr/actionModeBackground</item> <item name="android:backgroundSplit">?android:attr/actionModeSplitBackground</item> <item name="android:height">?android:attr/actionBarSize</item> <item name="android:titleTextStyle">@android:style/TextAppearance.Widget.ActionMode.Title</item> <item name="android:subtitleTextStyle">@android:style/TextAppearance.Widget.ActionMode.Subtitle</item> </style>

v21 / styles.xml:

<style name="Widget.ActionMode"> <item name="background">?android:attr/actionModeBackground</item> <item name="backgroundSplit">?android:attr/actionModeSplitBackground</item> <item name="height">?android:attr/actionBarSize</item> <item name="titleTextStyle">@android:style/TextAppearance.Widget.ActionMode.Title</item> <item name="subtitleTextStyle">@android:style/TextAppearance.Widget.ActionMode.Subtitle</item> </style>

También recomendaría tener tu estilo con el conjunto parent="@style/Widget.AppCompat.ActionMode" , por lo que heredarás los atributos que no te interesan sobre el reemplazo.


Solución para mi aplicación

<style name="AppTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionModeBackground">@color/bg_action_bar</item> </style>


Trabajé en mi proyecto

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="actionModeStyle">@style/CustomActionModeStyle</item> </style>

Estilo ActionMode personalizado

<style name="CustomActionModeStyle" parent="Base.Widget.AppCompat.ActionMode"> <item name="background">@color/color_primary</item> <item name="titleTextStyle">@style/CustomeActionModeTextStyle</item> </style>

Título personalizado ActionMode

<style name="CustomeActionModeTextStyle" parent="TextAppearance.AppCompat.Widget.ActionMode.Title"> <item name="android:textSize">16sp</item> <item name="android:textColor">@color/color_primaryText</item> </style>


con este código puede cambiar el color de fondo del modo de acción y también cambiar la imagen HECHO. Nota: también puedes agregar tu texto en tu imagen! en res / styles.xml:

<style name="AppTheme" parent="android:Theme.Holo"> <item name="android:actionModeBackground">@android:color/white</item> <item name="android:actionModeCloseDrawable">@drawable/plus</item>