Relleno de la imagen del indicador "arriba" de la barra de acciones
Frecuentes
Visto 19,887 veces
16
Estoy buscando una forma de diseñar el ícono "arriba" de la barra de acción que se muestra cuando lo configuró para que se muestre desde su actividad:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Estuve buscando y encontré una manera de agregar relleno entre el ícono de inicio y el título (Relleno entre el título y el icono de inicio de ActionBar), pero no es una forma de agregar relleno entre el ícono de inicio y el ícono del indicador hacia arriba.
cavé en ActionBarView.HomeView
en la fuente de Android y parece inflar el indicador hacia arriba a través de esta llamada:
mUpView = findViewById(com.android.internal.R.id.up);
El problema es el com.android.internal.R.id.up
es interno, por lo que no puedo acceder a él, por lo que la solución vinculada anteriormente para rellenar el ícono de inicio no funcionará. Idealmente, me gustaría anular el ActionBarView.HomeView
, pero es privado dentro del ActionBarView
.
¿Alguien sabe si ActionBarSherlock proporciona una buena manera de anular este comportamiento? Busqué proporcionar un diseño de inicio personalizado, pero los hilos que encontré indicaron que no sería una buena idea desviarse de las clases estándar de Android.
¿Alguna idea?
8 Respuestas
22
Esta solución funcionará
ImageView view = (ImageView)findViewById(android.R.id.home);
view.setPadding(10, 0, 0, 0);
PERO, se verá obligado a poner este código en una actividad principal, o en cada actividad en la que desee agregar el relleno al botón de inicio.
Sugiero este enfoque:
Cree una lista de capas dibujable con el siguiente código:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <bitmap android:antialias="true" android:gravity="center" android:src="@drawable/btn_back_actionbar_normal" /> </item> <item> <shape android:shape="rectangle" > <size android:width="24dp" /> <solid android:color="@android:color/transparent" /> </shape> </item> </layer-list>
En tus estilos agrega:
Para valores-11:
<item name="android:homeAsUpIndicator">@drawable/actionbar_back_selector</item>
Para valores:
<item name="homeAsUpIndicator">@drawable/actionbar_back_selector</item>
De esta manera, agregará un relleno entre el botón Atrás y el botón Inicio en la barra de acción de compatibilidad, y tendrá que agregar este código solo una vez, ¡y estará disponible en toda la aplicación!
Respondido el 26 de junio de 17 a las 20:06
findViewById(android.R.id.home)
devuelve nulo para mí - Ігар Цімошка
9
A partir de la API 15, el posicionamiento de estos elementos está codificado en los recursos de diseño. La única alternativa que tiene sería usar un diseño de navegación personalizado para crear el suyo propio y ocultar la navegación de inicio integrada.
Respondido el 10 de junio de 12 a las 21:06
Esa es la conclusión a la que también llegué. Supongo que Google está tratando de hacer cumplir ciertos estándares de diseño. Al final, volví a bajar a la luz holográfica predeterminada como indicador de inicio y se ve bastante decente en comparación con el indicador personalizado que había configurado. - dgknipp
Esto ahora ha cambiado con la introducción de la barra de herramientas en API 21: Vinay W
7
Actualmente esta respuesta es correcto. Simplemente configure el relleno izquierdo del botón de inicio y agregará relleno entre el botón de inicio y la flecha hacia arriba
ImageView view = (ImageView)findViewById(android.R.id.home);
view.setPadding(10, 0, 0, 0);
contestado el 23 de mayo de 17 a las 12:05
Creo que también funciona con ActionBarSherlock para versiones inferiores: starkej2
@ blacksh33p No, no es así, pero esto se puede arreglar fácilmente. - Nombre que se ve en la pagina
Devuelve nulo - desarrollador de Android
2
Tal vez funcione si agrega el relleno al gráfico (en Photoshop, por ejemplo) y establece este gráfico en el tema con el atributo
<item name="android:homeAsUpIndicator">@drawable/up_with_padding</item>
Respondido el 10 de junio de 12 a las 21:06
Creo que lo intenté, tendría que verificar nuevamente, pero estoy bastante seguro de que Google está eliminando cualquier relleno que pueda agregar para mantener la interfaz de usuario consistente. - dgknipp
1
En mi celular, ES trabajo. La solución está a continuación:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<bitmap
android:src="@drawable/frame_menu"
android:antialias="true"
android:gravity="center"
/>
</item>
<item >
<shape android:shape="rectangle">
<size android:width="24dp"/>
<solid android:color="@android:color/transparent"></solid>
<padding
android:right="10dp"
/>
</shape>
</item>
La frase más importante es "android:right=10dp"
respondido 12 mar '15, 04:03
0
Simplemente agregaría a la respuesta de @ blacksh33p cómo obtener el logotipo ImageView mientras se usa ActionBarSherlock para admitir teléfonos más antiguos.
ImageView view = (ImageView)findViewById(android.R.id.home);
if (view == null)
view = (ImageView)findViewById(R.id.abs__home); // not sure that the name is exactly this - I tested it while developing an app on monodroid
Respondido el 14 de enero de 14 a las 10:01
0
Simplemente agregue la llamada de diseño dibujable "actionbar_back_selector" y coloque este código
Y en el archivo Java (el diseño que necesita para el botón de inicio del archivo java correspondiente) Ponga este código ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(verdadero); actionBar.setHomeButtonEnabled(verdadero); actionBar.setHomeAsUpIndicator(R.drawable.actionbar_back_selector);
Respondido 28 ago 15, 05:08
<layer-list xmlns:android="esquemas.android.com/apk/res/android">Este es el código del diseño actionbar_back_selector - Samy Gopal
0
puede definir un estilo para "HomeAsUpIndicator" en su tema de esta manera:
<item name="toolbarNavigationButtonStyle">@style/MyToolbarNavigationButtonStyle</item>
en el que la toobarNavigationButtonStyle
se usa para definir todos los estilos para ese indicador, puede cambiar su ancho y paddingEnd para ampliar la brecha entre este y el texto del título.
Respondido el 11 de diciembre de 15 a las 02:12
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas android actionbarsherlock or haz tu propia pregunta.
De mi trabajo que: stackoverflow.com/questions/26809133/… - Mnio