Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Invisible ActionMode iconos de elemento en Theme.Sherlock.Light.DarkActionBar

Cuando se utiliza Theme.Sherlock.Light.DarkActionBar (o Theme.Holo.Light.DarkActionBar , no hace ninguna diferencia), el ActionMode (o "ActionBar contextual") que aparece por ejemplo al seleccionar texto, es por defecto el mismo estilo Manera como en el tema oscuro estándar, que es azul oscuro con los iconos ligeros de la acción.

Sin embargo, cuando intenta seleccionar un texto en un Diálogo (que es de estilo ligero en este tema, en contraste con el negro ActionBar), un ActionMode estilo como en el tema de luz (fondo blanco) aparece en su lugar. El problema es que sus iconos de acción no son oscuros como debieran ser, sino ligeros, haciéndolos efectivamente invisibles.

  • Eclipse - Errores ejecutando el constructor 'Android Package Builder'
  • Cómo manejar el dispositivo de nuevo botón en sencha touch aplicación
  • Problemas con Android XML Editor y Eclipse ... Difícil de editar manualmente XML
  • Cambiar el color sólido de la forma en el tiempo de ejecución dentro del xml Drawable usado como fondo
  • Cómo deshabilitar los efectos de sonido predeterminados para toda mi aplicación o actividad
  • Android: ¿Cómo acceder a una sola base de datos de múltiples actividades en la aplicación?
  • Introduzca aquí la descripción de la imagen

    Esto parece como si el fondo fuera tomado del tema ligero (debido al diálogo ligero), pero los iconos fueron tomados del tema oscuro. ¿Es esto un error en el tema Light.DarkActionBar ? ¿Puedo hacer algo al respecto?

  • ¿Cuál es la diferencia entre finish () y finishActivity (int requestCode) en android
  • Android strings.xml ¿Buenas prácticas?
  • Lazy Injection con Dagger 2 en Android
  • Mostrar ventana de información en cada marcador a la vez
  • Cómo pasar ArrayList <CustomeObject> de una actividad a otra?
  • ADT (Eclipse) vs. Android Studio: ¿Cuánta diferencia de tamaño de archivo APK es normal?
  • 8 Solutions collect form web for “Invisible ActionMode iconos de elemento en Theme.Sherlock.Light.DarkActionBar”

    Estuve peleando con el mismo problema desde los últimos dos días. Finalmente, surgió una solución!

    Estoy utilizando un DialogFragment con un objeto AlertDialog . En el método onCreateDialog() , todo lo que tenemos que hacer es obtener el contexto de la actividad padre y volver a configurar su tema en Theme.Light .

     @Override public Dialog onCreateDialog(Bundle savedInstanceState) { //get the parent activity context and set it's theme again. Context ctx = getActivity(); ctx.setTheme(android.R.style.Theme_Holo_Light); AlertDialog.Builder builder = new AlertDialog.Builder(ctx); LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.your_dialog_layout, null, false); builder.setView(view); //your other code for the dialog // return builder.create(); 

    Ahora los iconos en la Barra de Acción Contextual del EditText tienen el color correcto.

    Forzar setTheme en el contexto actual no es una buena idea, ya que corrompe el tema. Para resolver que puede utilizar ContextThemeWrapper .

     Context themedContext = new ContextThemeWrapper(getActivity(), android.R.style.Theme_Holo_Light); final AlertDialog dialog = new AlertDialog.Builder(themedContext) 

    Me enfrenté al mismo problema. Uso el tema personalizado heredado de Theme.AppCompat.Light . En mi tema he actionModeTheme artículo de actionModeTheme por mi artículo de encargo del estilo. Pero me enfrenté al problema como su problema. Para solucionar este problema, simplemente anule el elemento android:alertDialogTheme en su tema personalizado.

     <style name="AppTheme" parent="@style/Theme.AppCompat.Light"> ... <item name="android:alertDialogTheme">@style/AppBaseTheme</item> ... </style> <style name="AlertDialogTheme"> ... <item name="android:actionModeStyle">@style/ActionModeStyle</item> ... </style> <style name="ActionModeStyle" parent="Widget.AppCompat.Base.ActionMode"> ... <item name="android:background">@color/gray</item> ... </style> 

    Nota, funciona desde api 11 nivel.

    Problema:

    El tema de la aplicación se hereda de android: Theme.Light , y no hay tema dedicado para AlertDialog, por lo que los elementos ActionMode son de alguna manera invisibles.


    Solución:

    1. Cree un tema dedicado para AlertDialog;

     <style name="AppTheme" parent="android:Theme.Light"> </style> <style name="AlertDialogTheme" parent="AppTheme"> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowCloseOnTouchOutside">true</item> <item name="android:windowActionModeOverlay">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item> <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item> <item name="android:maxLines">1</item> <item name="android:scrollHorizontally">true</item> <item name="android:textColor">@android:color/holo_blue_light</item> </style> 

    Nota: la línea más importante que hace la magia es <item name="android:textColor">@android:color/holo_blue_light</item>

    2. Utilice el tema dedicado al crear un AlertDialog.

     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AlertDialogTheme); 

    Por favor, eche un vistazo a la captura de pantalla que muestra antes y después de aplicar el tema.

    captura de pantalla

    Añada esto a su tema:

      <item name="android:actionModeCutDrawable">@drawable/ic_menu_cut_holo_light</item> <item name="android:actionModeCopyDrawable">@drawable/ic_menu_copy_holo_light</item> <item name="android:actionModePasteDrawable">@drawable/ic_menu_paste_holo_light</item> <item name="android:actionModeSelectAllDrawable">@drawable/ic_menu_selectall_holo_light</item> 

    A continuación, agregue los recursos necesarios a su proyecto que se pueden encontrar aquí: https://github.com/android/platform_frameworks_base/tree/master/core/res/res

    He intentado las soluciones mencionadas, el único que trabajó para mí (tengo apuntada la aplicación para la API 7, con AppCompat 21.0.3) es configurar el estilo de diálogo a R.style.Theme_AppCompat. Sí, el diálogo estúpido es ahora negro. Este problema también está presente en AppCompat 22.

      final Context themedContext = new ContextThemeWrapper(activity, R.style.Theme_AppCompat); builder = new AlertDialog.Builder(themedContext); contents = ((LayoutInflater) themedContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.tag_editor, null); builder.setView(contents); 

    Tuve el mismo problema con la aplicación que estoy manteniendo La solución era muy simple – Sólo tenía que cambiar compileSdkVersion y targetSdkVersion a la última

    La solución es usar el contexto de ActionBar para crear el AlertDialog:

     Context themedContext = getActivity().getActionBar().getThemedContext(); 

    O con ActionBarSherlock / ActionBarCompat:

     Context themedContext = getActivity().getSupportActionBar().getThemedContext(); 

    A continuación, cree el AlertDialog utilizando este contexto temático:

     AlertDialog.Builder builder = new AlertDialog.Builder(themedContext); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.