Iconos de preferencias de Android no centrados en dispositivos => Lollipop
He añadido un icono a un ListPreference con android: icono, pero en los dispositivos con Lollipop o Marshmallow, el icono se coloca en el lado izquierdo del espacio disponible en lugar de en el centro donde está en los dispositivos pre-Lollipop, y cómo debería ser.
Los dispositivos pre-Lollipop (api 18 – JB 4.3), así es como debería ser!
- ¿Cómo definir el icono de acceso directo a la pantalla del sitio web?
- Tamaño de icono de inicio de la aplicación de Android
- Android imagebutton cómo cambiar el tamaño del icono
- ¿Cómo puedo añadir un número al ícono del lanzador como HTC mail Does?
- Pestañas de ViewPagerIndicator: Iconos sobre el texto
Post-Lollipop (api 23 – MM), icono no centrado.
PreferenceScreen
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="@string/general"> <ListPreference android:defaultValue="@string/pref_languages_default" android:entries="@array/languages" android:entryValues="@array/listLangValues" android:icon="@drawable/translate" android:key="language" android:title="@string/languages" /> </PreferenceCategory> </PreferenceScreen>
Translate.xml drawable
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:width="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#fff" android:pathData="M12.87,15.07L10.33,12.56L10.36,12.53C12.1,10.59 13.34,8.36 14.07,6H17V4H10V2H8V4H1V6H12.17C11.5,7.92 10.44,9.75 9,11.35C8.07,10.32 7.3,9.19 6.69,8H4.69C5.42,9.63 6.42,11.17 7.67,12.56L2.58,17.58L4,19L9,14L12.11,17.11L12.87,15.07M18.5,10H16.5L12,22H14L15.12,19H19.87L21,22H23L18.5,10M15.88,17L17.5,12.67L19.12,17H15.88Z" /> </vector>
¿Cómo puedo centrarlo en LL o MM?
- Cómo agregar el "Pack de iconos de la barra de acciones" a Android Studio
- Android: icono incorrecto en el encabezado, cuando la aplicación se está ejecutando en backround
- Google Play Store: necesitas arreglar tu icono de alta resolución. No es una imagen válida
- ¿Cómo puedo cambiar el color del icono de la hamburguesa ActionBar?
- Icono de notificación de Android dinámico
- Android Studio agrega relleno al icono ic_launcher.png
- ¿Cómo obtener una notificación en la esquina del icono del programa?
- El icono de notificación de Lollipop es demasiado pequeño
He pasado todo el día tratando de averiguar lo mismo. Terminé fijando el diseño para cada preferencia a una versión modificada del diseño del defecto. Cambié el relleno de la imagen de -4dp a 0dp y la minwidth de icon_frame de 60dp a 56dp.
Definitivamente no es ideal, pero funcionará por ahora.
Asi que
Añada el diseño de preferencias a ListPreference en la pantalla Preferencias:
<ListPreference android:defaultValue="@string/pref_languages_default" android:entries="@array/languages" android:entryValues="@array/listLangValues" android:icon="@drawable/translate" android:key="language" android:title="@string/languages" android:layout="@layout/my_preference" />
Y crear layout \ my_preference.xml:
<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2014 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/activatedBackgroundIndicator" android:clipToPadding="false" android:gravity="center_vertical" android:minHeight="?attr/listPreferredItemHeightSmall" android:orientation="horizontal" android:paddingEnd="?attr/listPreferredItemPaddingRight" android:paddingLeft="?attr/listPreferredItemPaddingLeft" android:paddingRight="?attr/listPreferredItemPaddingRight" android:paddingStart="?attr/listPreferredItemPaddingLeft" tools:ignore="NewApi"> <android.support.v7.widget.LinearLayoutCompat android:id="@+id/icon_frame" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="0dp" android:layout_marginStart="0dp" android:gravity="start|center_vertical" android:minWidth="56dp" android:orientation="horizontal" android:paddingBottom="4dp" android:paddingEnd="12dp" android:paddingRight="12dp" android:paddingTop="4dp"> <android.support.v7.widget.AppCompatImageView android:id="@+android:id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxHeight="48dp" android:maxWidth="48dp" /> </android.support.v7.widget.LinearLayoutCompat> <RelativeLayout android:layout_width="0px" android:layout_height="wrap_content" android:layout_weight="1" android:paddingBottom="16dp" android:paddingTop="16dp"> <android.support.v7.widget.AppCompatTextView android:id="@android:id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?attr/textAppearanceListItem" tools:text="title" /> <android.support.v7.widget.AppCompatTextView android:id="@android:id/summary" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@android:id/title" android:layout_alignStart="@android:id/title" android:layout_below="@android:id/title" android:textAppearance="?android:attr/textAppearanceListItemSecondary" android:textColor="?android:attr/textColorSecondary" tools:text="summary" /> </RelativeLayout> <!-- Preference should place its actual preference widget here. --> <android.support.v7.widget.LinearLayoutCompat android:id="@android:id/widget_frame" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="end|center_vertical" android:orientation="vertical" android:paddingLeft="16dp" android:paddingStart="16dp" />
Una vez más, definitivamente no es la solución correcta, pero es una solución. Espero que ayude.
En realidad no hay nada malo
https://material.io/guidelines/patterns/settings.html#settings-placement
Entonces todo esta bien
- Android Pay – La aplicación de muestra no funciona ("No disponible aquí")
- ¿Por qué Rxjava podría causar fugas de memoria?