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?
- Fondo de Android ActionBar (cuando la aplicación se reduce / minimiza)
- Relleno entre el icono de inicio de ActionBar y el título
- ¿Por qué ActionBar Drop Shadow no funciona? Androide
- Cambiar el color del menú de menú por color mediante programación
- ¿Cómo puedo usar una barra de acción contextual con la biblioteca de soporte de Android?
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>
- Cómo cambiar el color del título de la barra de acción en el código
- ¿Por qué está el menú desplegable de desbordamiento encima de la barra de acción?
- Cambiar el icono del desbordamiento de la barra de acción
- ¿Cómo cambio programaticamente el color de texto de ActionBar menuitem?
- Actividad de Android sin ActionBar
- Diferente aspecto / estilo para el elemento de menú específico en ActionBar
- Android: quita el botón "Más acciones" del ActionBar
- Holo Light con Dark Actionbar muestra Holo Dark copiar y pegar iconos
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>
- El método add (int, Fragment, String) en el tipo FragmentTransaction no es aplicable para los argumentos (int, Fragment, String)
- Cómo pasar el objeto JSON a una nueva actividad