Uso de la barra de acción de soporte de inicio activada

Acabo de modificar nuestro código para usar el nuevo SupportActionBar proporcionado en la librería v7-appcompat, pero cuando se ejecuta el código en un teléfono Jellybean (presumiblemente el mismo problema existe para Honeycomb y Ice Cream Sandwich) el botón de inicio no parece Ser activado.

Llamando a getSupportActionBar (). SetHomeButtonEnabled (true); No parece hacer lo que dice pero funciona para los teléfonos de Gingerbread.

Si lo reemplazo con getActionBar (). SetHomeButtonEnabled (true) funciona.

El tema que utilizo para v11 + es el siguiente:

<style name="MyTheme" parent="@style/Theme.AppCompat"> <item name="android:windowActionBar">true</item> <item name="android:windowNoTitle">false</item> <item name="android:listViewStyle">@style/MyListView</item> <item name="android:actionBarStyle">@style/MyActionBarStyle</item> <item name="android:windowSoftInputMode">stateAlwaysHidden</item> <item name="android:buttonStyle">@style/MyButton</item> <item name="android:radioButtonStyle">@style/MyRadioButtonStyle</item> <item name="android:windowContentOverlay">@drawable/ab_solid_dove_grey</item> <item name="android:windowTitleSize">@dimen/action_bar_height</item> <item name="android:selectableItemBackground">@drawable/sel_standard_item</item> <item name="android:windowBackground">@drawable/default_bg</item> <item name="android:actionMenuTextAppearance">@style/MyActionBarText</item> <item name="android:actionMenuTextColor">@color/gallery</item> <item name="android:tabWidgetStyle">@style/MyTabWidget</item> </style> 

Y el estilo de barra de acción v11 + se define:

 <style name="MyActionBarStyle" parent="android:style/Widget.Holo.ActionBar"> <item name="android:displayOptions">useLogo|showHome|showCustom</item> <item name="displayOptions">useLogo|showHome|showCustom</item> <item name="android:actionBarSize">@dimen/action_bar_height</item> <item name="android:icon">@drawable/ic_launcher</item> <item name="android:background">@android:color/transparent</item> <!-- Remove blue line from bottom of action bar --> </style> 

Alguien sabe por qué el botón de inicio no se habilita en una versión de Android que admita la barra de acciones correctamente.

=== UPDATE === Acabo de mirar el código fuente de la librería appcompat y he notado lo siguiente en ActionBarImplBase que me parece mal:

  setHomeButtonEnabled(abp.enableHomeButtonByDefault() || homeAsUp); 

Esto significa que el botón de inicio sólo estará habilitado si la versión de Android es menor que ICS o si he habilitado el indicador de arriba? – que no quiero.

¿Has intentado usar los tres de estos (también intenta intercambiar para getSupportActionbar() )?

  getActionBar().setDisplayShowHomeEnabled(true); getActionBar().setHomeButtonEnabled(true); getActionBar().setDisplayHomeAsUpEnabled(true); 

¿Has tratado de manejar el botón manualmente?

 @Override public boolean onOptionsItemSelected(int featureId, MenuItem item) { int itemId = item.getItemId(); if(itemId == android.R.id.home){ // Do stuff } return true; } 

Este trabajó para mí:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_your_activity); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // ... other stuff } @Override public boolean onSupportNavigateUp(){ finish(); // or call onBackPressed() return true; } 

El método onSupportNavigateUp() se llama cuando se utiliza el botón Atrás en el SupportActionBar .

Trate de usar la biblioteca de Sherlock para dispositivos Android, como Gingerbread cos barras de acción de Android sólo se admite desde 3,0 hacia arriba por lo que la biblioteca de bloqueo sherlock le da compatibilidad hacia atrás.

http://actionbarsherlock.com/ — descargar la biblioteca aquí.

A continuación, agregue estas líneas en su código.

 ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setIcon(android.R.color.transparent); actionBar.setDisplayUseLogoEnabled(false); 

Esto le ayudaría a agregar una clave de inicio de nuevo en su barra de acción. También haría su icono invisible si usted no quiere que se muestre. Pero si quieres que el icono de tu aplicación muestre en toda la actividad, simplemente comenta esta línea debajo

ActionBar.setIcon (android.R.color.transparent);

Ahora, por favor, pruebe esto. Porque yo era capaz de resolver mi propio problema como este, aunque estaba en Sherlock. Desde tus estilos anteriores, puedo ver que hiciste alguna personalización a tus temas. En mi caso realicé un poco de personalización a mi tema de Sherlock y esto fue lo que me dio problema porque en android 4.0 y por encima de mi tema no. Así que simplemente añadí un pedazo de código que indica a android que use el tema predeterminado de Sherlock cuando se está ejecutando en android 4.0 y superior. Así que supongo que esto funcionaría para usted. Usted le dice a android que use el tema por defecto de la librería v7-appcompat en la versión de android que no funciona para usted.

El código está abajo:

 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { this.setTheme(R.style.Theme_Sherlock); } else { this.setTheme(R.style.Theme_Sherlock_Light_DarkActionBar); } 

En su caso, edite el tema a la biblioteca v7-appcompat.

Marque como respuesta si funciona para usted. Creo que podría ser posible personalizar el tema del código de los lugares donde usted está utilizando esto.

Puede agregar una ActionBar a su actividad cuando se ejecute en API de nivel 7 o superior extendiendo la clase ActionBarActivity para su actividad y estableciendo el tema de actividad en Theme.AppCompat o un tema similar.

  • SetTitle to AppCompatDialog no funciona
  • No se puede importar AppCompatActivity
  • AppCompat ActionBar tema giratorio desplegable
  • Animación de la barra de herramientas Android AppCompat-v21
  • El diseño personalizado con ActionBar en appcompat hace que el contenido se superponga con la barra de acción
  • Android Studio / Gradle no encuentra recursos de AppCompat para pruebas
  • No se puede obtener AppCompat ActionBar / Toolbar para convertirse en una superposición
  • El botón de radio creado dinámicamente o CheckBox no utiliza el acento de color
  • Android appCompat problema con samsung y wiko
  • NoClassDefFoundError: Resolución fallida de: Landroid / support / v7 / appcompat / R $ styleable
  • ¿Por qué Eclipse agrega automáticamente el soporte de la librería appcompat v7 cada vez que crea un nuevo proyecto?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.