Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ed53e35 authored by Doris Ling's avatar Doris Ling
Browse files

Reserve space for preference icon.

Add an attribute to Preference to specify whether the space of the icon
view should be reserved when no preference icon is provided.

Bug: 36448695
Test: manual
Change-Id: I03b49fe93d54bb9106cf167a677a9ea544a3e3a1
parent 479bb430
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -696,6 +696,7 @@ package android {
    field public static final int hyphenationFrequency = 16843998; // 0x10104de
    field public static final int icon = 16842754; // 0x1010002
    field public static final int iconPreview = 16843337; // 0x1010249
    field public static final int iconSpaceReserved = 16844132; // 0x1010564
    field public static final int iconTint = 16844129; // 0x1010561
    field public static final int iconTintMode = 16844130; // 0x1010562
    field public static final int iconifiedByDefault = 16843514; // 0x10102fa
@@ -32044,6 +32045,7 @@ package android.preference {
    method public int getWidgetLayoutResource();
    method public boolean hasKey();
    method public boolean isEnabled();
    method public boolean isIconSpaceReserved();
    method public boolean isPersistent();
    method public boolean isRecycleEnabled();
    method public boolean isSelectable();
@@ -32078,6 +32080,7 @@ package android.preference {
    method public void setFragment(java.lang.String);
    method public void setIcon(android.graphics.drawable.Drawable);
    method public void setIcon(int);
    method public void setIconSpaceReserved(boolean);
    method public void setIntent(android.content.Intent);
    method public void setKey(java.lang.String);
    method public void setLayoutResource(int);
+3 −0
Original line number Diff line number Diff line
@@ -810,6 +810,7 @@ package android {
    field public static final int hyphenationFrequency = 16843998; // 0x10104de
    field public static final int icon = 16842754; // 0x1010002
    field public static final int iconPreview = 16843337; // 0x1010249
    field public static final int iconSpaceReserved = 16844132; // 0x1010564
    field public static final int iconTint = 16844129; // 0x1010561
    field public static final int iconTintMode = 16844130; // 0x1010562
    field public static final int iconifiedByDefault = 16843514; // 0x10102fa
@@ -34891,6 +34892,7 @@ package android.preference {
    method public int getWidgetLayoutResource();
    method public boolean hasKey();
    method public boolean isEnabled();
    method public boolean isIconSpaceReserved();
    method public boolean isPersistent();
    method public boolean isRecycleEnabled();
    method public boolean isSelectable();
@@ -34925,6 +34927,7 @@ package android.preference {
    method public void setFragment(java.lang.String);
    method public void setIcon(android.graphics.drawable.Drawable);
    method public void setIcon(int);
    method public void setIconSpaceReserved(boolean);
    method public void setIntent(android.content.Intent);
    method public void setKey(java.lang.String);
    method public void setLayoutResource(int);
+3 −0
Original line number Diff line number Diff line
@@ -696,6 +696,7 @@ package android {
    field public static final int hyphenationFrequency = 16843998; // 0x10104de
    field public static final int icon = 16842754; // 0x1010002
    field public static final int iconPreview = 16843337; // 0x1010249
    field public static final int iconSpaceReserved = 16844132; // 0x1010564
    field public static final int iconTint = 16844129; // 0x1010561
    field public static final int iconTintMode = 16844130; // 0x1010562
    field public static final int iconifiedByDefault = 16843514; // 0x10102fa
@@ -32181,6 +32182,7 @@ package android.preference {
    method public int getWidgetLayoutResource();
    method public boolean hasKey();
    method public boolean isEnabled();
    method public boolean isIconSpaceReserved();
    method public boolean isPersistent();
    method public boolean isRecycleEnabled();
    method public boolean isSelectable();
@@ -32215,6 +32217,7 @@ package android.preference {
    method public void setFragment(java.lang.String);
    method public void setIcon(android.graphics.drawable.Drawable);
    method public void setIcon(int);
    method public void setIconSpaceReserved(boolean);
    method public void setIntent(android.content.Intent);
    method public void setKey(java.lang.String);
    method public void setLayoutResource(int);
+31 −2
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ import java.util.Set;
 * @attr ref android.R.styleable#Preference_shouldDisableView
 * @attr ref android.R.styleable#Preference_recycleEnabled
 * @attr ref android.R.styleable#Preference_singleLineTitle
 * @attr ref android.R.styleable#Preference_iconSpaceReserved
 */
public class Preference implements Comparable<Preference> {
    /**
@@ -135,6 +136,7 @@ public class Preference implements Comparable<Preference> {
    private boolean mParentDependencyMet = true;
    private boolean mRecycleEnabled = true;
    private boolean mSingleLineTitle = true;
    private boolean mIconSpaceReserved;

    /**
     * @see #setShouldDisableView(boolean)
@@ -302,6 +304,10 @@ public class Preference implements Comparable<Preference> {
                case com.android.internal.R.styleable.Preference_singleLineTitle:
                    mSingleLineTitle = a.getBoolean(attr, mSingleLineTitle);
                    break;

                case com.android.internal.R.styleable.Preference_iconSpaceReserved:
                    mIconSpaceReserved = a.getBoolean(attr, mIconSpaceReserved);
                    break;
           }
        }
        a.recycle();
@@ -631,7 +637,11 @@ public class Preference implements Comparable<Preference> {
                    imageView.setImageDrawable(mIcon);
                }
            }
            imageView.setVisibility(mIcon != null ? View.VISIBLE : View.GONE);
            if (mIcon != null) {
                imageView.setVisibility(View.VISIBLE);
            } else {
                imageView.setVisibility(mIconSpaceReserved ? View.INVISIBLE : View.GONE);
            }
        }

        final View imageFrame = view.findViewById(com.android.internal.R.id.icon_frame);
@@ -930,6 +940,25 @@ public class Preference implements Comparable<Preference> {
        return mSingleLineTitle;
    }

    /**
     * Sets whether to reserve the space of this Preference icon view when no icon is provided.
     *
     * @param iconSpaceReserved set {@code true} if the space for the icon view should be reserved
     */
    public void setIconSpaceReserved(boolean iconSpaceReserved) {
        mIconSpaceReserved = iconSpaceReserved;
        notifyChanged();
    }

    /**
     * Gets whether the space this preference icon view is reserved.
     *
     * @see #setIconSpaceReserved(boolean)
     * @return {@code true} if the space of this preference icon view is reserved
     */
    public boolean isIconSpaceReserved() {
        return mIconSpaceReserved;
    }
    /**
     * Returns a unique ID for this Preference.  This ID should be unique across all
     * Preference objects in a hierarchy.
+4 −0
Original line number Diff line number Diff line
@@ -7226,6 +7226,10 @@
        <!-- Whether to use single line for the preference title text. By default, preference title
             will be constrained to one line, so the default value of this attribute is true. -->
        <attr name="singleLineTitle" format="boolean" />
        <!-- Whether the space for the preference icon view will be reserved. By default, preference
             icon view visibility will be set to GONE when there is no icon provided, so the default
             value of this attribute is false. -->
        <attr name="iconSpaceReserved" format="boolean" />
    </declare-styleable>

    <!-- Base attributes available to CheckBoxPreference. -->
Loading