Loading core/java/android/widget/ActionMenuPresenter.java +3 −13 Original line number Diff line number Diff line Loading @@ -59,7 +59,6 @@ import java.util.List; */ public class ActionMenuPresenter extends BaseMenuPresenter implements ActionProvider.SubUiVisibilityListener { private static final String TAG = "ActionMenuPresenter"; private static final int ITEM_ANIMATION_DURATION = 150; private static final boolean ACTIONBAR_ANIMATIONS_ENABLED = false; Loading Loading @@ -87,20 +86,16 @@ public class ActionMenuPresenter extends BaseMenuPresenter private OpenOverflowRunnable mPostedOpenRunnable; private ActionMenuPopupCallback mPopupCallback; private final boolean mShowCascadingMenus; final PopupPresenterCallback mPopupPresenterCallback = new PopupPresenterCallback(); int mOpenSubMenuId; // These collections are used to store pre- and post-layout information for menu items, // which is used to determine appropriate animations to run for changed items. private SparseArray<MenuItemLayoutInfo> mPreLayoutItems = new SparseArray<MenuItemLayoutInfo>(); private SparseArray<MenuItemLayoutInfo> mPostLayoutItems = new SparseArray<MenuItemLayoutInfo>(); private SparseArray<MenuItemLayoutInfo> mPreLayoutItems = new SparseArray<>(); private SparseArray<MenuItemLayoutInfo> mPostLayoutItems = new SparseArray<>(); // The list of currently running animations on menu items. private List<ItemAnimationInfo> mRunningItemAnimations = new ArrayList<ItemAnimationInfo>(); private List<ItemAnimationInfo> mRunningItemAnimations = new ArrayList<>(); private ViewTreeObserver.OnPreDrawListener mItemAnimationPreDrawListener = new ViewTreeObserver.OnPreDrawListener() { @Override Loading Loading @@ -130,9 +125,6 @@ public class ActionMenuPresenter extends BaseMenuPresenter public ActionMenuPresenter(Context context) { super(context, com.android.internal.R.layout.action_menu_layout, com.android.internal.R.layout.action_menu_item_layout); mShowCascadingMenus = context.getResources().getBoolean( com.android.internal.R.bool.config_enableCascadingSubmenus); } @Override Loading Loading @@ -845,8 +837,6 @@ public class ActionMenuPresenter extends BaseMenuPresenter } private class OverflowMenuButton extends ImageButton implements ActionMenuView.ActionMenuChildView { private final float[] mTempPts = new float[2]; public OverflowMenuButton(Context context) { super(context, null, com.android.internal.R.attr.actionOverflowButtonStyle); Loading core/java/android/widget/ForwardingListener.java +0 −8 Original line number Diff line number Diff line Loading @@ -53,12 +53,6 @@ public abstract class ForwardingListener /** Whether this listener is currently forwarding touch events. */ private boolean mForwarding; /** * Whether forwarding was initiated by a long-press. If so, we won't * force the window to dismiss when the touch stream ends. */ private boolean mWasLongPress; /** The id of the first pointer down in the current event stream. */ private int mActivePointerId; Loading Loading @@ -172,7 +166,6 @@ public abstract class ForwardingListener switch (actionMasked) { case MotionEvent.ACTION_DOWN: mActivePointerId = srcEvent.getPointerId(0); mWasLongPress = false; if (mDisallowIntercept == null) { mDisallowIntercept = new DisallowIntercept(); Loading Loading @@ -243,7 +236,6 @@ public abstract class ForwardingListener e.recycle(); mForwarding = true; mWasLongPress = true; } /** Loading core/java/android/widget/ListPopupWindow.java +33 −41 Original line number Diff line number Diff line Loading @@ -16,18 +16,20 @@ package android.widget; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import com.android.internal.R; import com.android.internal.view.menu.ShowableListMenu; import android.annotation.AttrRes; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.StyleRes; import android.content.Context; import android.content.res.TypedArray; import android.database.DataSetObserver; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Handler; import android.text.TextUtils; import android.util.AttributeSet; import android.util.IntProperty; import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; Loading @@ -38,13 +40,7 @@ import android.view.View.OnTouchListener; import android.view.ViewGroup; import android.view.ViewParent; import android.view.WindowManager; import android.view.animation.AccelerateDecelerateInterpolator; import com.android.internal.R; import com.android.internal.view.menu.ShowableListMenu; import com.android.internal.widget.AutoScrollHelper.AbsListViewAutoScroller; import java.util.Locale; import android.widget.AdapterView.OnItemSelectedListener; /** * A ListPopupWindow anchors itself to a host view and displays a Loading Loading @@ -109,8 +105,6 @@ public class ListPopupWindow implements ShowableListMenu { private boolean mModal; private int mLayoutDirection; PopupWindow mPopup; /** Loading Loading @@ -174,7 +168,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param context Context used for contained views. */ public ListPopupWindow(Context context) { public ListPopupWindow(@NonNull Context context) { this(context, null, com.android.internal.R.attr.listPopupWindowStyle, 0); } Loading @@ -185,7 +179,7 @@ public class ListPopupWindow implements ShowableListMenu { * @param context Context used for contained views. * @param attrs Attributes from inflating parent views used to style the popup. */ public ListPopupWindow(Context context, AttributeSet attrs) { public ListPopupWindow(@NonNull Context context, @Nullable AttributeSet attrs) { this(context, attrs, com.android.internal.R.attr.listPopupWindowStyle, 0); } Loading @@ -197,7 +191,8 @@ public class ListPopupWindow implements ShowableListMenu { * @param attrs Attributes from inflating parent views used to style the popup. * @param defStyleAttr Default style attribute to use for popup content. */ public ListPopupWindow(Context context, AttributeSet attrs, int defStyleAttr) { public ListPopupWindow(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) { this(context, attrs, defStyleAttr, 0); } Loading @@ -210,7 +205,8 @@ public class ListPopupWindow implements ShowableListMenu { * @param defStyleAttr Style attribute to read for default styling of popup content. * @param defStyleRes Style resource ID to use for default styling of popup content. */ public ListPopupWindow(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { public ListPopupWindow(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr, @StyleRes int defStyleRes) { mContext = context; mHandler = new Handler(context.getMainLooper()); Loading @@ -227,9 +223,6 @@ public class ListPopupWindow implements ShowableListMenu { mPopup = new PopupWindow(context, attrs, defStyleAttr, defStyleRes); mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); // Set the default layout direction to match the default locale one final Locale locale = mContext.getResources().getConfiguration().locale; mLayoutDirection = TextUtils.getLayoutDirectionFromLocale(locale); } /** Loading @@ -238,7 +231,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param adapter The adapter to use to create this window's content. */ public void setAdapter(ListAdapter adapter) { public void setAdapter(@Nullable ListAdapter adapter) { if (mObserver == null) { mObserver = new PopupDataSetObserver(); } else if (mAdapter != null) { Loading Loading @@ -371,7 +364,7 @@ public class ListPopupWindow implements ShowableListMenu { /** * @return The background drawable for the popup window. */ public Drawable getBackground() { public @Nullable Drawable getBackground() { return mPopup.getBackground(); } Loading @@ -380,7 +373,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param d A drawable to set as the background. */ public void setBackgroundDrawable(Drawable d) { public void setBackgroundDrawable(@Nullable Drawable d) { mPopup.setBackgroundDrawable(d); } Loading @@ -389,7 +382,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param animationStyle Animation style to use. */ public void setAnimationStyle(int animationStyle) { public void setAnimationStyle(@StyleRes int animationStyle) { mPopup.setAnimationStyle(animationStyle); } Loading @@ -399,7 +392,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @return Animation style that will be used. */ public int getAnimationStyle() { public @StyleRes int getAnimationStyle() { return mPopup.getAnimationStyle(); } Loading @@ -408,7 +401,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @return The popup's anchor view */ public View getAnchorView() { public @Nullable View getAnchorView() { return mDropDownAnchorView; } Loading @@ -418,7 +411,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param anchor The view to use as an anchor. */ public void setAnchorView(View anchor) { public void setAnchorView(@Nullable View anchor) { mDropDownAnchorView = anchor; } Loading Loading @@ -537,7 +530,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @see ListView#setOnItemClickListener(android.widget.AdapterView.OnItemClickListener) */ public void setOnItemClickListener(AdapterView.OnItemClickListener clickListener) { public void setOnItemClickListener(@Nullable AdapterView.OnItemClickListener clickListener) { mItemClickListener = clickListener; } Loading @@ -546,9 +539,9 @@ public class ListPopupWindow implements ShowableListMenu { * * @param selectedListener Listener to register. * * @see ListView#setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener) * @see ListView#setOnItemSelectedListener(OnItemSelectedListener) */ public void setOnItemSelectedListener(AdapterView.OnItemSelectedListener selectedListener) { public void setOnItemSelectedListener(@Nullable OnItemSelectedListener selectedListener) { mItemSelectedListener = selectedListener; } Loading @@ -558,7 +551,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param prompt View to use as an informational prompt. */ public void setPromptView(View prompt) { public void setPromptView(@Nullable View prompt) { boolean showing = isShowing(); if (showing) { removePromptView(); Loading Loading @@ -686,7 +679,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param listener Listener that will be notified when the popup is dismissed. */ public void setOnDismissListener(PopupWindow.OnDismissListener listener) { public void setOnDismissListener(@Nullable PopupWindow.OnDismissListener listener) { mPopup.setOnDismissListener(listener); } Loading Loading @@ -795,7 +788,7 @@ public class ListPopupWindow implements ShowableListMenu { /** * @return The currently selected item or null if the popup is not showing. */ public Object getSelectedItem() { public @Nullable Object getSelectedItem() { if (!isShowing()) { return null; } Loading Loading @@ -834,7 +827,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @see ListView#getSelectedView() */ public View getSelectedView() { public @Nullable View getSelectedView() { if (!isShowing()) { return null; } Loading @@ -846,11 +839,11 @@ public class ListPopupWindow implements ShowableListMenu { * Only valid when {@link #isShowing()} == {@code true}. */ @Override public ListView getListView() { public @Nullable ListView getListView() { return mDropDownList; } DropDownListView createDropDownListView(Context context, boolean hijackFocus) { @NonNull DropDownListView createDropDownListView(Context context, boolean hijackFocus) { return new DropDownListView(context, hijackFocus); } Loading @@ -874,7 +867,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @see #setModal(boolean) */ public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) { // when the drop down is shown, we drive it directly if (isShowing()) { // the key events are forwarded to the list in the drop down view Loading Loading @@ -969,7 +962,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @see #setModal(boolean) */ public boolean onKeyUp(int keyCode, KeyEvent event) { public boolean onKeyUp(int keyCode, @NonNull KeyEvent event) { if (isShowing() && mDropDownList.getSelectedItemPosition() >= 0) { boolean consumed = mDropDownList.onKeyUp(keyCode, event); if (consumed && KeyEvent.isConfirmKey(keyCode)) { Loading @@ -993,7 +986,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @see #setModal(boolean) */ public boolean onKeyPreIme(int keyCode, KeyEvent event) { public boolean onKeyPreIme(int keyCode, @NonNull KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && isShowing()) { // special case for the back key, we do not even try to send it // to the drop down list but instead, consume it immediately Loading Loading @@ -1159,7 +1152,6 @@ public class ListPopupWindow implements ShowableListMenu { mPopup.setContentView(dropDownView); } else { dropDownView = (ViewGroup) mPopup.getContentView(); final View view = mPromptView; if (view != null) { LinearLayout.LayoutParams hintParams = Loading core/java/com/android/internal/view/menu/StandardMenuPopup.java +23 −9 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.internal.view.menu; import android.content.Context; Loading @@ -7,7 +23,6 @@ import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnAttachStateChangeListener; import android.view.View.OnKeyListener; import android.view.ViewTreeObserver.OnGlobalLayoutListener; Loading @@ -30,7 +45,7 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On MenuPresenter, OnKeyListener { private final Context mContext; private final LayoutInflater mInflater; private final MenuBuilder mMenu; private final MenuAdapter mAdapter; private final boolean mOverflowOnly; Loading Loading @@ -79,8 +94,6 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On private Callback mPresenterCallback; private ViewTreeObserver mTreeObserver; private ViewGroup mMeasureParent; /** Whether the popup has been dismissed. Once dismissed, it cannot be opened again. */ private boolean mWasDismissed; Loading @@ -99,10 +112,10 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On public StandardMenuPopup(Context context, MenuBuilder menu, View anchorView, int popupStyleAttr, int popupStyleRes, boolean overflowOnly) { mContext = Preconditions.checkNotNull(context); mInflater = LayoutInflater.from(context); mMenu = menu; mOverflowOnly = overflowOnly; mAdapter = new MenuAdapter(menu, mInflater, mOverflowOnly); final LayoutInflater inflater = LayoutInflater.from(context); mAdapter = new MenuAdapter(menu, inflater, mOverflowOnly); mPopupStyleAttr = popupStyleAttr; mPopupStyleRes = popupStyleRes; Loading Loading @@ -155,8 +168,7 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On mPopup.setDropDownGravity(mDropDownGravity); if (!mHasContentWidth) { mContentWidth = measureIndividualMenuWidth( mAdapter, mMeasureParent, mContext, mPopupMaxWidth); mContentWidth = measureIndividualMenuWidth(mAdapter, null, mContext, mPopupMaxWidth); mHasContentWidth = true; } Loading @@ -177,7 +189,9 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On false); TextView titleView = (TextView) titleItemView.findViewById( com.android.internal.R.id.title); if (titleView != null) { titleView.setText(mMenu.getHeaderTitle()); } titleItemView.setEnabled(false); listView.addHeaderView(titleItemView, null, false); Loading Loading
core/java/android/widget/ActionMenuPresenter.java +3 −13 Original line number Diff line number Diff line Loading @@ -59,7 +59,6 @@ import java.util.List; */ public class ActionMenuPresenter extends BaseMenuPresenter implements ActionProvider.SubUiVisibilityListener { private static final String TAG = "ActionMenuPresenter"; private static final int ITEM_ANIMATION_DURATION = 150; private static final boolean ACTIONBAR_ANIMATIONS_ENABLED = false; Loading Loading @@ -87,20 +86,16 @@ public class ActionMenuPresenter extends BaseMenuPresenter private OpenOverflowRunnable mPostedOpenRunnable; private ActionMenuPopupCallback mPopupCallback; private final boolean mShowCascadingMenus; final PopupPresenterCallback mPopupPresenterCallback = new PopupPresenterCallback(); int mOpenSubMenuId; // These collections are used to store pre- and post-layout information for menu items, // which is used to determine appropriate animations to run for changed items. private SparseArray<MenuItemLayoutInfo> mPreLayoutItems = new SparseArray<MenuItemLayoutInfo>(); private SparseArray<MenuItemLayoutInfo> mPostLayoutItems = new SparseArray<MenuItemLayoutInfo>(); private SparseArray<MenuItemLayoutInfo> mPreLayoutItems = new SparseArray<>(); private SparseArray<MenuItemLayoutInfo> mPostLayoutItems = new SparseArray<>(); // The list of currently running animations on menu items. private List<ItemAnimationInfo> mRunningItemAnimations = new ArrayList<ItemAnimationInfo>(); private List<ItemAnimationInfo> mRunningItemAnimations = new ArrayList<>(); private ViewTreeObserver.OnPreDrawListener mItemAnimationPreDrawListener = new ViewTreeObserver.OnPreDrawListener() { @Override Loading Loading @@ -130,9 +125,6 @@ public class ActionMenuPresenter extends BaseMenuPresenter public ActionMenuPresenter(Context context) { super(context, com.android.internal.R.layout.action_menu_layout, com.android.internal.R.layout.action_menu_item_layout); mShowCascadingMenus = context.getResources().getBoolean( com.android.internal.R.bool.config_enableCascadingSubmenus); } @Override Loading Loading @@ -845,8 +837,6 @@ public class ActionMenuPresenter extends BaseMenuPresenter } private class OverflowMenuButton extends ImageButton implements ActionMenuView.ActionMenuChildView { private final float[] mTempPts = new float[2]; public OverflowMenuButton(Context context) { super(context, null, com.android.internal.R.attr.actionOverflowButtonStyle); Loading
core/java/android/widget/ForwardingListener.java +0 −8 Original line number Diff line number Diff line Loading @@ -53,12 +53,6 @@ public abstract class ForwardingListener /** Whether this listener is currently forwarding touch events. */ private boolean mForwarding; /** * Whether forwarding was initiated by a long-press. If so, we won't * force the window to dismiss when the touch stream ends. */ private boolean mWasLongPress; /** The id of the first pointer down in the current event stream. */ private int mActivePointerId; Loading Loading @@ -172,7 +166,6 @@ public abstract class ForwardingListener switch (actionMasked) { case MotionEvent.ACTION_DOWN: mActivePointerId = srcEvent.getPointerId(0); mWasLongPress = false; if (mDisallowIntercept == null) { mDisallowIntercept = new DisallowIntercept(); Loading Loading @@ -243,7 +236,6 @@ public abstract class ForwardingListener e.recycle(); mForwarding = true; mWasLongPress = true; } /** Loading
core/java/android/widget/ListPopupWindow.java +33 −41 Original line number Diff line number Diff line Loading @@ -16,18 +16,20 @@ package android.widget; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import com.android.internal.R; import com.android.internal.view.menu.ShowableListMenu; import android.annotation.AttrRes; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.StyleRes; import android.content.Context; import android.content.res.TypedArray; import android.database.DataSetObserver; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Handler; import android.text.TextUtils; import android.util.AttributeSet; import android.util.IntProperty; import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; Loading @@ -38,13 +40,7 @@ import android.view.View.OnTouchListener; import android.view.ViewGroup; import android.view.ViewParent; import android.view.WindowManager; import android.view.animation.AccelerateDecelerateInterpolator; import com.android.internal.R; import com.android.internal.view.menu.ShowableListMenu; import com.android.internal.widget.AutoScrollHelper.AbsListViewAutoScroller; import java.util.Locale; import android.widget.AdapterView.OnItemSelectedListener; /** * A ListPopupWindow anchors itself to a host view and displays a Loading Loading @@ -109,8 +105,6 @@ public class ListPopupWindow implements ShowableListMenu { private boolean mModal; private int mLayoutDirection; PopupWindow mPopup; /** Loading Loading @@ -174,7 +168,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param context Context used for contained views. */ public ListPopupWindow(Context context) { public ListPopupWindow(@NonNull Context context) { this(context, null, com.android.internal.R.attr.listPopupWindowStyle, 0); } Loading @@ -185,7 +179,7 @@ public class ListPopupWindow implements ShowableListMenu { * @param context Context used for contained views. * @param attrs Attributes from inflating parent views used to style the popup. */ public ListPopupWindow(Context context, AttributeSet attrs) { public ListPopupWindow(@NonNull Context context, @Nullable AttributeSet attrs) { this(context, attrs, com.android.internal.R.attr.listPopupWindowStyle, 0); } Loading @@ -197,7 +191,8 @@ public class ListPopupWindow implements ShowableListMenu { * @param attrs Attributes from inflating parent views used to style the popup. * @param defStyleAttr Default style attribute to use for popup content. */ public ListPopupWindow(Context context, AttributeSet attrs, int defStyleAttr) { public ListPopupWindow(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) { this(context, attrs, defStyleAttr, 0); } Loading @@ -210,7 +205,8 @@ public class ListPopupWindow implements ShowableListMenu { * @param defStyleAttr Style attribute to read for default styling of popup content. * @param defStyleRes Style resource ID to use for default styling of popup content. */ public ListPopupWindow(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { public ListPopupWindow(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr, @StyleRes int defStyleRes) { mContext = context; mHandler = new Handler(context.getMainLooper()); Loading @@ -227,9 +223,6 @@ public class ListPopupWindow implements ShowableListMenu { mPopup = new PopupWindow(context, attrs, defStyleAttr, defStyleRes); mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); // Set the default layout direction to match the default locale one final Locale locale = mContext.getResources().getConfiguration().locale; mLayoutDirection = TextUtils.getLayoutDirectionFromLocale(locale); } /** Loading @@ -238,7 +231,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param adapter The adapter to use to create this window's content. */ public void setAdapter(ListAdapter adapter) { public void setAdapter(@Nullable ListAdapter adapter) { if (mObserver == null) { mObserver = new PopupDataSetObserver(); } else if (mAdapter != null) { Loading Loading @@ -371,7 +364,7 @@ public class ListPopupWindow implements ShowableListMenu { /** * @return The background drawable for the popup window. */ public Drawable getBackground() { public @Nullable Drawable getBackground() { return mPopup.getBackground(); } Loading @@ -380,7 +373,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param d A drawable to set as the background. */ public void setBackgroundDrawable(Drawable d) { public void setBackgroundDrawable(@Nullable Drawable d) { mPopup.setBackgroundDrawable(d); } Loading @@ -389,7 +382,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param animationStyle Animation style to use. */ public void setAnimationStyle(int animationStyle) { public void setAnimationStyle(@StyleRes int animationStyle) { mPopup.setAnimationStyle(animationStyle); } Loading @@ -399,7 +392,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @return Animation style that will be used. */ public int getAnimationStyle() { public @StyleRes int getAnimationStyle() { return mPopup.getAnimationStyle(); } Loading @@ -408,7 +401,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @return The popup's anchor view */ public View getAnchorView() { public @Nullable View getAnchorView() { return mDropDownAnchorView; } Loading @@ -418,7 +411,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param anchor The view to use as an anchor. */ public void setAnchorView(View anchor) { public void setAnchorView(@Nullable View anchor) { mDropDownAnchorView = anchor; } Loading Loading @@ -537,7 +530,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @see ListView#setOnItemClickListener(android.widget.AdapterView.OnItemClickListener) */ public void setOnItemClickListener(AdapterView.OnItemClickListener clickListener) { public void setOnItemClickListener(@Nullable AdapterView.OnItemClickListener clickListener) { mItemClickListener = clickListener; } Loading @@ -546,9 +539,9 @@ public class ListPopupWindow implements ShowableListMenu { * * @param selectedListener Listener to register. * * @see ListView#setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener) * @see ListView#setOnItemSelectedListener(OnItemSelectedListener) */ public void setOnItemSelectedListener(AdapterView.OnItemSelectedListener selectedListener) { public void setOnItemSelectedListener(@Nullable OnItemSelectedListener selectedListener) { mItemSelectedListener = selectedListener; } Loading @@ -558,7 +551,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param prompt View to use as an informational prompt. */ public void setPromptView(View prompt) { public void setPromptView(@Nullable View prompt) { boolean showing = isShowing(); if (showing) { removePromptView(); Loading Loading @@ -686,7 +679,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @param listener Listener that will be notified when the popup is dismissed. */ public void setOnDismissListener(PopupWindow.OnDismissListener listener) { public void setOnDismissListener(@Nullable PopupWindow.OnDismissListener listener) { mPopup.setOnDismissListener(listener); } Loading Loading @@ -795,7 +788,7 @@ public class ListPopupWindow implements ShowableListMenu { /** * @return The currently selected item or null if the popup is not showing. */ public Object getSelectedItem() { public @Nullable Object getSelectedItem() { if (!isShowing()) { return null; } Loading Loading @@ -834,7 +827,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @see ListView#getSelectedView() */ public View getSelectedView() { public @Nullable View getSelectedView() { if (!isShowing()) { return null; } Loading @@ -846,11 +839,11 @@ public class ListPopupWindow implements ShowableListMenu { * Only valid when {@link #isShowing()} == {@code true}. */ @Override public ListView getListView() { public @Nullable ListView getListView() { return mDropDownList; } DropDownListView createDropDownListView(Context context, boolean hijackFocus) { @NonNull DropDownListView createDropDownListView(Context context, boolean hijackFocus) { return new DropDownListView(context, hijackFocus); } Loading @@ -874,7 +867,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @see #setModal(boolean) */ public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) { // when the drop down is shown, we drive it directly if (isShowing()) { // the key events are forwarded to the list in the drop down view Loading Loading @@ -969,7 +962,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @see #setModal(boolean) */ public boolean onKeyUp(int keyCode, KeyEvent event) { public boolean onKeyUp(int keyCode, @NonNull KeyEvent event) { if (isShowing() && mDropDownList.getSelectedItemPosition() >= 0) { boolean consumed = mDropDownList.onKeyUp(keyCode, event); if (consumed && KeyEvent.isConfirmKey(keyCode)) { Loading @@ -993,7 +986,7 @@ public class ListPopupWindow implements ShowableListMenu { * * @see #setModal(boolean) */ public boolean onKeyPreIme(int keyCode, KeyEvent event) { public boolean onKeyPreIme(int keyCode, @NonNull KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && isShowing()) { // special case for the back key, we do not even try to send it // to the drop down list but instead, consume it immediately Loading Loading @@ -1159,7 +1152,6 @@ public class ListPopupWindow implements ShowableListMenu { mPopup.setContentView(dropDownView); } else { dropDownView = (ViewGroup) mPopup.getContentView(); final View view = mPromptView; if (view != null) { LinearLayout.LayoutParams hintParams = Loading
core/java/com/android/internal/view/menu/StandardMenuPopup.java +23 −9 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.internal.view.menu; import android.content.Context; Loading @@ -7,7 +23,6 @@ import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnAttachStateChangeListener; import android.view.View.OnKeyListener; import android.view.ViewTreeObserver.OnGlobalLayoutListener; Loading @@ -30,7 +45,7 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On MenuPresenter, OnKeyListener { private final Context mContext; private final LayoutInflater mInflater; private final MenuBuilder mMenu; private final MenuAdapter mAdapter; private final boolean mOverflowOnly; Loading Loading @@ -79,8 +94,6 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On private Callback mPresenterCallback; private ViewTreeObserver mTreeObserver; private ViewGroup mMeasureParent; /** Whether the popup has been dismissed. Once dismissed, it cannot be opened again. */ private boolean mWasDismissed; Loading @@ -99,10 +112,10 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On public StandardMenuPopup(Context context, MenuBuilder menu, View anchorView, int popupStyleAttr, int popupStyleRes, boolean overflowOnly) { mContext = Preconditions.checkNotNull(context); mInflater = LayoutInflater.from(context); mMenu = menu; mOverflowOnly = overflowOnly; mAdapter = new MenuAdapter(menu, mInflater, mOverflowOnly); final LayoutInflater inflater = LayoutInflater.from(context); mAdapter = new MenuAdapter(menu, inflater, mOverflowOnly); mPopupStyleAttr = popupStyleAttr; mPopupStyleRes = popupStyleRes; Loading Loading @@ -155,8 +168,7 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On mPopup.setDropDownGravity(mDropDownGravity); if (!mHasContentWidth) { mContentWidth = measureIndividualMenuWidth( mAdapter, mMeasureParent, mContext, mPopupMaxWidth); mContentWidth = measureIndividualMenuWidth(mAdapter, null, mContext, mPopupMaxWidth); mHasContentWidth = true; } Loading @@ -177,7 +189,9 @@ final class StandardMenuPopup extends MenuPopup implements OnDismissListener, On false); TextView titleView = (TextView) titleItemView.findViewById( com.android.internal.R.id.title); if (titleView != null) { titleView.setText(mMenu.getHeaderTitle()); } titleItemView.setEnabled(false); listView.addHeaderView(titleItemView, null, false); Loading