La mia app ha preferenze personalizzate con layout personalizzato e dopo aver provato la mia app su Android 5, ho notato che le mie preferenze personalizzate sembrano diverse (dimensione, colore, riempimento) gli altri. Quindi ho pensato che sarebbe stata una soluzione semplice prendendo semplicemente preference.xml
da Android 5 SDK, unendomi alle mie modifiche e posizionando un nuovo layout nella cartella layout-v21
. Ha risolto problemi di riempimento e di colore, ma non le dimensioni del titolo che è più grande.La dimensione del carattere del titolo personalizzato è maggiore della preferenza standard in Android 5
La mia preferenza personalizzato costruttore si presenta così:
public SeekBarPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setLayoutResource(R.layout.preference_seekbar);
}
preference_seekbar.xml (appena aggiunto SeekBar al layout originale):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:paddingEnd="?android:attr/scrollbarSize"
android:background="?android:attr/selectableItemBackground" >
<ImageView
android:id="@+android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dip"
android:layout_marginEnd="6dip"
android:layout_marginTop="6dip"
android:layout_marginBottom="6dip"
android:layout_weight="1">
<TextView android:id="@+android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:ellipsize="marquee"
android:fadingEdge="horizontal" />
<TextView android:id="@+android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@android:id/title"
android:layout_alignStart="@android:id/title"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary"
android:maxLines="4" />
<SeekBar android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+android:id/title"
android:layout_toEndOf="@android:id/summary"
android:layout_toStartOf="@android:id/widget_frame"/>
</RelativeLayout>
<!-- Preference should place its actual preference widget here. -->
<LinearLayout android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical" />
</LinearLayout>
Si può notare sopra quel widget titolo ha questo attributo originale : android:textAppearance="?android:attr/textAppearanceLarge"
che dovrebbe rendere grande il carattere, ma poi c'è una domanda sul perché la dimensione del font del titolo della preferenza standard è minore se usa lo stesso layout (solo senza barra di ricerca)?
Questo funziona per me. Dovresti cambiarlo anche nel tuo codice, è stato un po 'confuso. –