7

Se si imposta il selectability di un elemento preference su falso, si noterà che i divisori attorno a quell'elemento scompariranno.C'è un modo per mantenere i divisori attorno a una preferenza non selezionabile?

Sai se esiste un modo per mantenere questi divisori?

Ho esaminato l'API di ListView e non è stato possibile trovare una soluzione che possa essere applicata qui, poiché non è disponibile un attributo selezionabile per gli elementi di ListView (ad eccezione di headers e footers).

Grazie!

risposta

0

un codice di esempio potrebbe aiutare! hai impostato i divisori nell'elemento ListView? se sì, controllare anche this post.

<ListView 
    //... 
    android:divider="@color/black" 
    /> 

In caso contrario, è possibile creare un ListElementView personalizzato e aggiungere i divisori nel layout xml.

+1

Non sto dicendo che il mio elenco di voci di preferenze non abbia divisori. Sto dicendo che gli oggetti che sono fatti * non selezionabili * finiscono senza divisori attorno a loro. Non c'è nulla di speciale nel codice, dal momento che funziona come la struttura lo ha inteso. Sto solo cercando un modo per personalizzare questa esperienza predefinita. Grazie per l'aiuto! –

1

L'ho fatto con un hack.

<Preference android:layout="@layout/preference_divider" /> 
<Preference android:title="@string/whatever" android:selectable="false" /> 

res/layout/preference_divider.xml

<?xml version="1.0" encoding="utf-8"?> 
<View xmlns:android="http://schemas.android.com/apk/res/android" 
    android:background="#cccccc" 
    android:layout_width="fill_parent" 
    android:layout_height="1px" /> 
+0

Perché l'hai modificato in 1px? 0px funziona bene per me, mi chiedo solo se ci possono essere problemi con 0px su alcuni dispositivi o versioni di Android? – tomrozb

0

Ecco un "trucco" che ha funzionato per me. È sufficiente impostare android: focusable = "true" su qualsiasi elemento all'interno della preferenza. Ciò renderà l'intera linea di preferenza non selezionabile.

0

Se si desidera utilizzare la preferenza per mostrare del testo, è possibile utilizzare anche un EditTextPreference non modificabile. La preferenza sarà ancora selezionabile ma mostrerà il suo contenuto solo quando selezionata.

<EditTextPreference 
    android:editable="false" 
    ... /> 
0

La linea che si desidera nascondere si chiama "divisore". PreferenceActivity estende ListActivity e come ci si può aspettare utilizza ListView. È possibile modificare un divisore in un ListView. Nel tuo PreferenceActivity:

 ListView lv = getListView(); 
     lv.setDivider(new ColorDrawable(Color.TRANSPARENT)); 
     lv.setDividerHeight(0); 
Problemi correlati