Android: How To Adjust Margin/Padding In Preference?


Answer :

You could customize you checkbox like this: MyPreference.xml

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

and 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> 

the point is android:minWidth="0dp".


For anyone facing this issue and don't want to go through custom layout. I'd like to note that adding:

android:icon="@null" 

solved my problem with the left-side empty space.

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

As of 16 Feb 2020, This space is meant for icon. To get rid of this space use:

JAVA

    preference.setIconSpaceReserved(false); 

XML

<androidx.preference.PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">  <Preference     ...     app:iconSpaceReserved="true/false"     .../>  </androidx.preference.PreferenceScreen> 

True adds the padding. False removes it.

PS: Dependency used

implementation 'androidx.preference:preference:1.1.0' 

Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable