Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -44968,6 +44968,7 @@ package android.view { method public abstract void removeGroup(int); method public abstract void removeItem(int); method public abstract void setGroupCheckable(int, boolean, boolean); method public default void setGroupDividerEnabled(boolean); method public abstract void setGroupEnabled(int, boolean); method public abstract void setGroupVisible(int, boolean); method public abstract void setQwertyMode(boolean); api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -48575,6 +48575,7 @@ package android.view { method public abstract void removeGroup(int); method public abstract void removeItem(int); method public abstract void setGroupCheckable(int, boolean, boolean); method public default void setGroupDividerEnabled(boolean); method public abstract void setGroupEnabled(int, boolean); method public abstract void setGroupVisible(int, boolean); method public abstract void setQwertyMode(boolean); api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -45414,6 +45414,7 @@ package android.view { method public abstract void removeGroup(int); method public abstract void removeItem(int); method public abstract void setGroupCheckable(int, boolean, boolean); method public default void setGroupDividerEnabled(boolean); method public abstract void setGroupEnabled(int, boolean); method public abstract void setGroupVisible(int, boolean); method public abstract void setQwertyMode(boolean); core/java/android/view/Menu.java +6 −1 Original line number Diff line number Diff line Loading @@ -451,5 +451,10 @@ public interface Menu { * will use numeric shortcuts. */ public void setQwertyMode(boolean isQwerty); } /** * Enable or disable the group dividers. */ default void setGroupDividerEnabled(boolean groupDividerEnabled) { } } No newline at end of file core/java/com/android/internal/view/menu/ListMenuItemView.java +64 −28 Original line number Diff line number Diff line Loading @@ -16,14 +16,18 @@ package com.android.internal.view.menu; import com.android.internal.R; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.AbsListView; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ImageView; Loading @@ -34,7 +38,8 @@ import android.widget.TextView; /** * The item view for each item in the ListView-based MenuViews. */ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView { public class ListMenuItemView extends LinearLayout implements MenuView.ItemView, AbsListView.SelectionBoundsAdjuster { private static final String TAG = "ListMenuItemView"; private MenuItemImpl mItemData; Loading @@ -44,12 +49,14 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView private CheckBox mCheckBox; private TextView mShortcutView; private ImageView mSubMenuArrowView; private ImageView mGroupDivider; private Drawable mBackground; private int mTextAppearance; private Context mTextAppearanceContext; private boolean mPreserveIconSpacing; private Drawable mSubMenuArrow; private boolean mHasListDivider; private int mMenuType; Loading @@ -72,7 +79,13 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView mTextAppearanceContext = context; mSubMenuArrow = a.getDrawable(com.android.internal.R.styleable.MenuView_subMenuArrow); final TypedArray b = context.getTheme() .obtainStyledAttributes(null, new int[] { com.android.internal.R.attr.divider }, com.android.internal.R.attr.dropDownListViewStyle, 0); mHasListDivider = b.hasValue(0); a.recycle(); b.recycle(); } public ListMenuItemView(Context context, AttributeSet attrs, int defStyleAttr) { Loading Loading @@ -100,6 +113,7 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView if (mSubMenuArrowView != null) { mSubMenuArrowView.setImageDrawable(mSubMenuArrow); } mGroupDivider = findViewById(com.android.internal.R.id.group_divider); } public void initialize(MenuItemImpl itemData, int menuType) { Loading Loading @@ -298,4 +312,26 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView info.setCanOpenPopup(true); } } /** * Enable or disable group dividers for this view. */ public void setGroupDividerEnabled(boolean groupDividerEnabled) { // If mHasListDivider is true, disabling the groupDivider. // Otherwise, checking enbling it according to groupDividerEnabled flag. mGroupDivider.setVisibility(!mHasListDivider && groupDividerEnabled ? View.VISIBLE : View.GONE); } @Override public void adjustListItemSelectionBounds(Rect rect) { if (mGroupDivider.getVisibility() == View.VISIBLE) { // groupDivider is a part of MenuItemListView. // If ListMenuItem with divider enabled is hovered/clicked, divider also gets selected. // Clipping the selector bounds from the top divider portion when divider is enabled, // so that divider does not get selected on hover or click. final LayoutParams lp = (LayoutParams) mGroupDivider.getLayoutParams(); rect.top += mGroupDivider.getHeight() + lp.topMargin + lp.bottomMargin; } } } Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -44968,6 +44968,7 @@ package android.view { method public abstract void removeGroup(int); method public abstract void removeItem(int); method public abstract void setGroupCheckable(int, boolean, boolean); method public default void setGroupDividerEnabled(boolean); method public abstract void setGroupEnabled(int, boolean); method public abstract void setGroupVisible(int, boolean); method public abstract void setQwertyMode(boolean);
api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -48575,6 +48575,7 @@ package android.view { method public abstract void removeGroup(int); method public abstract void removeItem(int); method public abstract void setGroupCheckable(int, boolean, boolean); method public default void setGroupDividerEnabled(boolean); method public abstract void setGroupEnabled(int, boolean); method public abstract void setGroupVisible(int, boolean); method public abstract void setQwertyMode(boolean);
api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -45414,6 +45414,7 @@ package android.view { method public abstract void removeGroup(int); method public abstract void removeItem(int); method public abstract void setGroupCheckable(int, boolean, boolean); method public default void setGroupDividerEnabled(boolean); method public abstract void setGroupEnabled(int, boolean); method public abstract void setGroupVisible(int, boolean); method public abstract void setQwertyMode(boolean);
core/java/android/view/Menu.java +6 −1 Original line number Diff line number Diff line Loading @@ -451,5 +451,10 @@ public interface Menu { * will use numeric shortcuts. */ public void setQwertyMode(boolean isQwerty); } /** * Enable or disable the group dividers. */ default void setGroupDividerEnabled(boolean groupDividerEnabled) { } } No newline at end of file
core/java/com/android/internal/view/menu/ListMenuItemView.java +64 −28 Original line number Diff line number Diff line Loading @@ -16,14 +16,18 @@ package com.android.internal.view.menu; import com.android.internal.R; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.AbsListView; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ImageView; Loading @@ -34,7 +38,8 @@ import android.widget.TextView; /** * The item view for each item in the ListView-based MenuViews. */ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView { public class ListMenuItemView extends LinearLayout implements MenuView.ItemView, AbsListView.SelectionBoundsAdjuster { private static final String TAG = "ListMenuItemView"; private MenuItemImpl mItemData; Loading @@ -44,12 +49,14 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView private CheckBox mCheckBox; private TextView mShortcutView; private ImageView mSubMenuArrowView; private ImageView mGroupDivider; private Drawable mBackground; private int mTextAppearance; private Context mTextAppearanceContext; private boolean mPreserveIconSpacing; private Drawable mSubMenuArrow; private boolean mHasListDivider; private int mMenuType; Loading @@ -72,7 +79,13 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView mTextAppearanceContext = context; mSubMenuArrow = a.getDrawable(com.android.internal.R.styleable.MenuView_subMenuArrow); final TypedArray b = context.getTheme() .obtainStyledAttributes(null, new int[] { com.android.internal.R.attr.divider }, com.android.internal.R.attr.dropDownListViewStyle, 0); mHasListDivider = b.hasValue(0); a.recycle(); b.recycle(); } public ListMenuItemView(Context context, AttributeSet attrs, int defStyleAttr) { Loading Loading @@ -100,6 +113,7 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView if (mSubMenuArrowView != null) { mSubMenuArrowView.setImageDrawable(mSubMenuArrow); } mGroupDivider = findViewById(com.android.internal.R.id.group_divider); } public void initialize(MenuItemImpl itemData, int menuType) { Loading Loading @@ -298,4 +312,26 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView info.setCanOpenPopup(true); } } /** * Enable or disable group dividers for this view. */ public void setGroupDividerEnabled(boolean groupDividerEnabled) { // If mHasListDivider is true, disabling the groupDivider. // Otherwise, checking enbling it according to groupDividerEnabled flag. mGroupDivider.setVisibility(!mHasListDivider && groupDividerEnabled ? View.VISIBLE : View.GONE); } @Override public void adjustListItemSelectionBounds(Rect rect) { if (mGroupDivider.getVisibility() == View.VISIBLE) { // groupDivider is a part of MenuItemListView. // If ListMenuItem with divider enabled is hovered/clicked, divider also gets selected. // Clipping the selector bounds from the top divider portion when divider is enabled, // so that divider does not get selected on hover or click. final LayoutParams lp = (LayoutParams) mGroupDivider.getLayoutParams(); rect.top += mGroupDivider.getHeight() + lp.topMargin + lp.bottomMargin; } } }