ActionBar Compat no muestra el logotipo en Android 2.3.3

Estoy tratando de usar el nuevo ActionBar Compat proporcionado en el último soporte-v7 lib. Utilizando las muestras en SuppportV7Demos, cuando toco el "DISPLAY_USE_LOGO", el icono no cambia.

Ya que no puedo hacer que funcione en mi propia aplicación también, ¿alguien logró esto?

ActionBarDisplayOptions.java package com.example.android.supportv7.app; public class ActionBarDisplayOptions extends ActionBarActivity implements View.OnClickListener, ActionBar.TabListener { private View mCustomView; private ActionBar.LayoutParams mCustomViewLayoutParams; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.action_bar_display_options); findViewById(R.id.toggle_home_as_up).setOnClickListener(this); findViewById(R.id.toggle_show_home).setOnClickListener(this); findViewById(R.id.toggle_use_logo).setOnClickListener(this); findViewById(R.id.toggle_show_title).setOnClickListener(this); findViewById(R.id.toggle_show_custom).setOnClickListener(this); findViewById(R.id.toggle_navigation).setOnClickListener(this); findViewById(R.id.cycle_custom_gravity).setOnClickListener(this); findViewById(R.id.toggle_visibility).setOnClickListener(this); // Configure several action bar elements that will be toggled by display options. mCustomView = getLayoutInflater().inflate(R.layout.action_bar_display_options_custom, null); mCustomViewLayoutParams = new ActionBar.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); final ActionBar bar = getSupportActionBar(); bar.setCustomView(mCustomView, mCustomViewLayoutParams); bar.addTab(bar.newTab().setText("Tab 1").setTabListener(this)); bar.addTab(bar.newTab().setText("Tab 2").setTabListener(this)); bar.addTab(bar.newTab().setText("Tab 3").setTabListener(this)); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.display_options_actions, menu); return true; } @Override public boolean onSupportNavigateUp() { finish(); return true; } @Override public void onClick(View v) { final ActionBar bar = getSupportActionBar(); int flags = 0; switch (v.getId()) { case R.id.toggle_home_as_up: flags = ActionBar.DISPLAY_HOME_AS_UP; break; case R.id.toggle_show_home: flags = ActionBar.DISPLAY_SHOW_HOME; break; case R.id.toggle_use_logo: flags = ActionBar.DISPLAY_USE_LOGO; break; case R.id.toggle_show_title: flags = ActionBar.DISPLAY_SHOW_TITLE; break; case R.id.toggle_show_custom: flags = ActionBar.DISPLAY_SHOW_CUSTOM; break; case R.id.toggle_navigation: bar.setNavigationMode( bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_STANDARD ? ActionBar.NAVIGATION_MODE_TABS : ActionBar.NAVIGATION_MODE_STANDARD); return; case R.id.cycle_custom_gravity: { ActionBar.LayoutParams lp = mCustomViewLayoutParams; int newGravity = 0; switch (lp.gravity & Gravity.HORIZONTAL_GRAVITY_MASK) { case Gravity.LEFT: newGravity = Gravity.CENTER_HORIZONTAL; break; case Gravity.CENTER_HORIZONTAL: newGravity = Gravity.RIGHT; break; case Gravity.RIGHT: newGravity = Gravity.LEFT; break; } lp.gravity = lp.gravity & ~Gravity.HORIZONTAL_GRAVITY_MASK | newGravity; bar.setCustomView(mCustomView, lp); return; } case R.id.toggle_visibility: if (bar.isShowing()) { bar.hide(); } else { bar.show(); } return; } int change = bar.getDisplayOptions() ^ flags; bar.setDisplayOptions(change, flags); } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } } 

Y: action_bar_display_options.xml

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/toggle_home_as_up" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/toggle_home_as_up" /> <Button android:id="@+id/toggle_show_home" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/toggle_show_home" /> <Button android:id="@+id/toggle_use_logo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/toggle_use_logo" /> <Button android:id="@+id/toggle_show_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/toggle_show_title" /> <Button android:id="@+id/toggle_show_custom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/toggle_show_custom" /> <Button android:id="@+id/toggle_navigation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/toggle_navigation" /> <Button android:id="@+id/cycle_custom_gravity" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cycle_custom_gravity" /> <Button android:id="@+id/toggle_visibility" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/toggle_visibility" /> </LinearLayout> </ScrollView> 

En la versión de actionbarsherlock de mi aplicación estaba estableciendo el icono y el logotipo en el manifiesto. Después de cambiar a ActionBarCompat el logotipo no se mostró en la barra de acción en Android 2.2, 2.3.x.

Para hacer la demostración del logotipo que la fije en código

 ActionBar ab = getSupportActionBar(); ab.setLogo(R.drawable.logo); 

Y eliminado 'android: logo = "@ drawable / logo_icon"' del manifiesto.

Probado en Android 2.2, 2.3.3 y 4.1.2.

La configuración del logotipo en AndroidManifest.xml no actualiza la barra de acción en las versiones anteriores de Android (antes de la API 9), ya que no hay forma de recuperar ese valor en tiempo de ejecución en esas versiones de Android.

Para cambiar el icono a un logotipo en todas las versiones de Android, puede /res/values.xml barra de acción en /res/values.xml :

 <style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="actionBarStyle">@style/Widget.AppActionBar</item> </style> <style name="Widget.AppActionBar" parent="@style/Widget.AppCompat.ActionBar"> <item name="logo">@drawable/ic_logo</item> </style> 
  • Barra de pestañas ActionBar apilada que no rellena el padre
  • Cómo diseñar los elementos de menú en una barra de acción de Android
  • Número en barra de acciones como Gmail
  • El logotipo de Actionbar se convierte en el icono de la aplicación en un ActionView expandido
  • Las pestañas de navegación de Android ActionBar parecen diferentes en teléfonos y tabletas
  • Barra de acción El botón Atrás no funciona
  • Menú emergente en el clic de un botón en la barra de acción
  • Android ActionBar NullPointerException
  • ¿Barra de herramientas Android con dos líneas en el título?
  • Haga clic en el botón Done de una barra de acciones contextuales
  • Cómo cambiar el color de las pestañas de navegación de ActionBar?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.