2012-04-26 26 views
23

Estoy buscando información de estilo en la barra de acción contextual (CAB). Sólo hay que cambiar el color del texto, de hecho ..Estilos contextuales de la barra de acciones

Result of contextual actionbar

Como se puede ver de lo anterior, esto es utilizando el estándar Theme.Holo.Light.DarkActionBar tema, por lo que sólo necesita configurar el color del texto en blanco!

¿Alguien puede indicarme la dirección correcta?

+1

Parece que se trata de un error: http://code.google.com/p/android/issues/detail?id=26008 –

Respuesta

51

Para cambiar el color/etc del texto en una barra de acción contextual:

public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
    //mode.setTitle("Contextual Action Bar"); (replace this call) 
    TextView tv= (TextView)getLayoutInflater().inflate(R.layout.contextual_title, null); 
    tv.setText("Contextual Action Bar"); 
    mode.setCustomView(tv); 

donde diseño/contextual_title.xml contiene una sola TextView con su color/tamaño/estilo deseado etc

En De hecho, casi todo en una barra de acción contextual se puede diseñar. El único problema es que la búsqueda de la palabra 'contextual' no lleva a ninguna parte útil. Las características de estilo relevantes se llaman "actionMode ...". Éstos son algunos utilicé (definida en el tema.)

<item name="android:actionModeCloseDrawable">@drawable/check</item> 
<item name="android:actionModeCutDrawable">@drawable/ic_menu_cut_holo_dark</item> 
<item name="android:actionModeCopyDrawable">@drawable/ic_menu_copy_holo_dark</item> 
<item name="android:actionModePasteDrawable">@drawable/ic_menu_paste_holo_dark</item> 
<item name="android:actionModeSelectAllDrawable">@drawable/ic_menu_selectall_holo_dark</item> 
<item name="android:actionModeBackground">@drawable/contextual</item> 
<item name="android:actionModeCloseButtonStyle">@style/MyCloseButton</item> 

<!-- these change the press backgrounds for the vanilla actionBar and for search --> 
<item name="android:windowContentOverlay">@null</item> 
<item name="android:selectableItemBackground">@drawable/bar_selector</item> 
<item name="android:actionBarItemBackground">@drawable/bar_selector</item>  

<!-- these were defined in platform/.../data/res/values/... but Eclipse didn't recognize them --> 
<!--? item name="android:actionModeShareDrawable">@drawable/icon</item --> 
<!--? item name="android:actionModeFindDrawable">@drawable/icon</item --> 
<!--? item name="android:actionModeWebSearchDrawable">@drawable/icon</item --> 
<!-- item name="android:actionModeBackground">@drawable/red</item --> 

<!-- and finally --> 
<style name="MyCloseButton" parent="android:style/Widget.ActionButton.CloseMode"> 
    <item name="android:background">@drawable/bar_selector</item> 
</style> 

Puede configurar fácilmente sus propios iconos de edición de texto cortar/pegar/copiar/selectAll, el fondo de la barra , y el fondo icono que cambia de color cuando presionas los íconos (bar_selector arriba). Los iconos son ImageViews, no botones, y los id de edición (y el fondo pressable) se adjuntan al elemento primario de ImageView (uno principal por vista) que es un tipo 'interno'.

Nunca está claro qué sucede en los estilos: he encontrado que seleccionableItemBackground estaba en la plataforma Themes.xml, y he copiado y modificado el dibujable señalado.

+1

una cosa que no se trata aquí: cómo cambiar el color del texto del botón de cerrar (no el título). en muchos de mis dispositivos, todavía se muestra como oscuro a pesar de que he configurado el estilo del botón de modo de cierre para que sea holo normal. incluso intenté configurar el color del texto en el estilo de modo cerrado. –

+0

Esto no responde la pregunta como lo señaló Jeffrey. –

+0

¿Puedes explicar más en detalle cómo cambias el fondo del CAB, porque cuando puse el elemento = "android: actionModeBackground" en mi estilo para mi barra de acciones, no pasa nada para mí :( – Sandra

0

Si está iniciando manualmente el modo de acción contextual, puede llamar a setTheme() con un nuevo tema antes de iniciarlo (tal vez Theme.AppCompat.Light.DarkActionBar si está tratando de evitar el problema de texto negro sobre negro). Esto no afectará el tema de la actividad actual si ya ha configurado la vista de contenido de la actividad.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.my_activity_layout); 

    // these lines can occur anywhere so long as you've already 
    // called "setContentView()" on the activity. The theme 
    // you set here will apply to the action mode, but not to 
    // the activity. 
    setTheme(R.style.Theme_AppCompat_Light_DarkActionBar); 
    startSupportActionMode(myActionModeCallback); 

} 
0

funciona ahora, pero hay que introducirla en valores/styles.xml (no-valores de v #/styles.xml) e introducirlo en el general (etiqueta específica no API)

<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"> 
    <item name="android:actionModeCloseDrawable">@drawable/ic_launcher</item> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
</style> 
Cuestiones relacionadas