2012-03-02 10 views
11

Prima ho chiesto di rimuovere l'imbottitura della PreferenceActivity/PreferenceFragment:Android: come regolare il margine/riempimento nelle preferenze?

Android: How to maximize PreferenceFragment width (or get rid of margin)?

Questa volta ho problemi a regolare il margine/padding prima Testo titolo. (Vedi immagine sotto).

enter image description here

Qualcuno ha qualche idea?

+0

hi @jclova, sto affrontando con lo stesso problema, e non voglio passare attraverso il layout personalizzato per le caselle di controllo. Come ti sei liberato di questo problema. – Dory

+0

Sospetto, quello che vedi come il padding sul lato sinistro è un "android": icona' "vuoto". Dovresti fornire il tuo drawable con le dimensioni che desideri e vedere se è d'aiuto. – Stan

risposta

9

Si potrebbe personalizzare si casella di controllo in questo modo: MyPreference.xml

<CheckBoxPreference android:key="testcheckbox" 
    android:title="Checkbox Title" 
    android:summary="Checkbox Summary..." 
    android:layout="@layout/custom_checkbox_preference_layout"> 
</CheckBoxPreference> 

e custom_checkbox_preference_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<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:paddingLeft="16dip" 
    android:paddingRight="?android:attr/scrollbarSize"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:minWidth="0dp" 
     android:gravity="center" 
     android:orientation="horizontal"> 
     <ImageView 
      android:id="@+android:id/icon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      /> 
    </LinearLayout> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="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/textAppearanceMedium" 
      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_alignLeft="@android:id/title" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:textColor="?android:attr/textColorSecondary" 
      android:maxLines="4" /> 

    </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" 
     android:orientation="vertical" /> 

</LinearLayout> 

il punto è Android: minWidth = "0DP".

+0

ciao signore sto usando il layout personalizzato per CheckBoxPreference. ma il mio problema è il layout lineare con id "@ + android: id/widget_frame" sta avendo qualche padding nella sua sinistra e destra. come rimuoverlo.Grazie in anticipo. –

8

Per tutti coloro che devono affrontare questo problema e non vogliono passare attraverso il layout personalizzato. Mi piacerebbe notare che aggiungendo:

risolto il mio problema con lo spazio vuoto a sinistra.

<PreferenceScreen android:icon="@null" android:title="Your title" android:summary="Your summary" /> 
0

Il custom_checkbox_preference_layout.xml descritto da user1482130 lavoro anche senza modifiche per altri tipi di preferenze quali listpreferences! Molto utile

android:layout="@layout/custom_checkbox_preference_layout"> 
0

Se si sta creando preferenze passare dinamicamente ContextThemeWrapper come parametro per la nuova preferenza

TypedValue themeTypedValue = new TypedValue(); 
getActivity().getTheme().resolveAttribute(R.attr.preferenceTheme, themeTypedValue, true); 
ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(getActivity(), themeTypedValue.resourceId); 
Preference preference = new Preference(contextThemeWrapper); 

ho trovato in questo articolo: Dynamically creating Preference Screens on Android

Problemi correlati