Java 类android.widget.ListPopupWindow 实例源码

项目:q-mail    文件:RecipientSelectView.java   
private void initView(Context context) {
    // TODO: validator?

    alternatesPopup = new ListPopupWindow(context);
    alternatesAdapter = new AlternateRecipientAdapter(context, this);
    alternatesPopup.setAdapter(alternatesAdapter);

    // don't allow duplicates, based on equality of recipient objects, which is e-mail addresses
    allowDuplicates(false);

    // if a token is completed, pick an entry based on best guess.
    // Note that we override performCompletion, so this doesn't actually do anything
    performBestGuess(true);

    adapter = new RecipientAdapter(context);
    setAdapter(adapter);

    setLongClickable(true);
}
项目:rview    文件:DownloadDialogFragment.java   
private void showDownloadTypeChooser(View anchor) {
    //noinspection ConstantConditions
    final ListPopupWindow popupWindow = new ListPopupWindow(getContext());
    SimpleDropDownAdapter<Integer> adapter = new SimpleDropDownAdapter<>(
            getContext(), mDownloadTypes, mModel.downloadType);
    popupWindow.setAnchorView(anchor);
    popupWindow.setAdapter(adapter);
    popupWindow.setContentWidth(adapter.measureContentWidth());
    popupWindow.setOnItemClickListener((parent, view, position, id) -> {
        popupWindow.dismiss();

        // Update the view
        mModel.downloadType = mDownloadTypes.get(position);
        mBinding.downloadCommands
                .from(mDownloadCommands.get(mModel.downloadType))
                .update();
        mBinding.setModel(mModel);
        mBinding.executePendingBindings();
    });
    popupWindow.setModal(true);
    popupWindow.show();
}
项目:talk-android    文件:RecipientEditTextView.java   
private void showAddress(final DrawableRecipientChip currentChip, final ListPopupWindow popup,
                         int width) {
    if (!mAttachedToWindow) {
        return;
    }
    int line = getLayout().getLineForOffset(getChipStart(currentChip));
    int bottom = calculateOffsetFromBottom(line);
    // Align the alternates popup with the left side of the View,
    // regardless of the position of the chip tapped.
    popup.setWidth(width);
    popup.setAnchorView(this);
    popup.setVerticalOffset(bottom);
    popup.setAdapter(createSingleAddressAdapter(currentChip));
    popup.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            unselectChip(currentChip);
            popup.dismiss();
        }
    });
    popup.show();
    ListView listView = popup.getListView();
    listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    listView.setItemChecked(0, true);
}
项目:Edit-Spinner    文件:EditSpinner.java   
public void showDropDown() {
    if (mPopup.getAnchorView() == null) {
        if (mDropDownAnchorId != View.NO_ID) {
            mPopup.setAnchorView(getRootView().findViewById(mDropDownAnchorId));
        } else {
            mPopup.setAnchorView(this);
        }
    }
    if (!isPopupShowing()) {
        // Make sure the list does not obscure the IME when shown for the first time.
        mPopup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NEEDED);
    }

    requestFocus();
    mPopup.show();
    mPopup.getListView().setOverScrollMode(View.OVER_SCROLL_ALWAYS);

    if (mOnShowListener != null) {
        mOnShowListener.onShow();
    }
}
项目:K9-MailClient    文件:RecipientSelectView.java   
private void initView(Context context) {
    // TODO: validator?

    alternatesPopup = new ListPopupWindow(context);
    alternatesAdapter = new AlternateRecipientAdapter(context, this);
    alternatesPopup.setAdapter(alternatesAdapter);

    // don't allow duplicates, based on equality of recipient objects, which is e-mail addresses
    allowDuplicates(false);

    // if a token is completed, pick an entry based on best guess.
    // Note that we override performCompletion, so this doesn't actually do anything
    performBestGuess(true);

    adapter = new RecipientAdapter(context);
    setAdapter(adapter);

    setLongClickable(true);
}
项目:PopupList    文件:ListUtils.java   
public static int getVerticalOffset(ListPopupWindow popupWindow, View anchorView, int position, int contentHeight) {
    final int shadow = calculateVerticalShadow(popupWindow);
    int offset = -shadow;

    if ((position & PopupGravity.BOTTOM) == PopupGravity.BOTTOM || (position & PopupDirection.DOWN) == PopupDirection.DOWN) {
        offset += 0;
    }

    if ((position & PopupGravity.TOP) == PopupGravity.TOP) {
        offset += -anchorView.getHeight();
    }

    if ((position & PopupGravity.CENTER_VERTICAL) == PopupGravity.CENTER_VERTICAL || (position & PopupGravity.CENTER) == PopupGravity.CENTER) {
        offset += -anchorView.getHeight() / 2;
    }

    if ((position & PopupDirection.UP) == PopupDirection.UP) {
        offset += -contentHeight - anchorView.getHeight() - (2 * shadow);
    }

    return offset;
}
项目:PopupList    文件:ListUtils.java   
public static int getHorizontalOffset(ListPopupWindow popupWindow, View anchorView, int position, int contentWidth) {
    final int shadow = calculateHorizontalShadow(popupWindow);
    int offset = -shadow;

    if ((position & PopupGravity.LEFT) == PopupGravity.LEFT) {
        offset += 0;
    }

    if ((position & PopupGravity.RIGHT) == PopupGravity.RIGHT) {
        offset += anchorView.getWidth();
    }

    if ((position & PopupGravity.CENTER_HORIZONTAL) == PopupGravity.CENTER_HORIZONTAL || (position & PopupGravity.CENTER) == PopupGravity.CENTER) {
        offset += anchorView.getWidth() / 2;
    }

    if ((position & PopupDirection.LEFT) == PopupDirection.LEFT) {
        offset += -contentWidth;
    }

    return offset;
}
项目:PopupList    文件:PopupList.java   
private void setupList() {
    mPopup = new ListPopupWindow(mContext);
    mPopup.setAdapter(mAdapter);
    mPopup.setAnchorView(mAnchorView);
    mContentWidth = ListUtils.measureListContentWidth(mAdapter, mContext);
    mContentHeight = ListUtils.measureListContentHeight(mAdapter, mContext);
    mPopup.setContentWidth(mContentWidth);
    mPopup.setModal(mIsModal);
    mPopup.setOnDismissListener(mOnDismissListener);
    mPopup.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (mOnPopupListItemListener != null)
                mOnPopupListItemListener.onPopupListItemClicked(new PopupItem(mAdapter.getItem(position)));
            mPopup.dismiss();
        }
    });

    if (mAnimationStyle != -1) {
        mPopup.setAnimationStyle(mAnimationStyle);
    }
}
项目:365browser    文件:DropdownPopupWindow.java   
/**
 * Disable hiding on outside tap so that tapping on a text input field associated with the popup
 * will not hide the popup.
 */
public void disableHideOnOutsideTap() {
    // HACK: The ListPopupWindow's mPopup automatically dismisses on an outside tap. There's
    // no way to override it or prevent it, except reaching into ListPopupWindow's hidden
    // API. This allows the C++ controller to completely control showing/hiding the popup.
    // See http://crbug.com/400601
    try {
        Method setForceIgnoreOutsideTouch = ListPopupWindow.class.getMethod(
                "setForceIgnoreOutsideTouch", new Class[] { boolean.class });
        setForceIgnoreOutsideTouch.invoke(this, new Object[] { true });
    } catch (Exception e) {
        Log.e("AutofillPopup",
                "ListPopupWindow.setForceIgnoreOutsideTouch not found",
                e);
    }
}
项目:itsnat_droid    文件:ClassDescView_widget_AutoCompleteTextView.java   
@SuppressWarnings("unchecked")
protected void init()
{
    super.init();

    addAttrDescAN(new AttrDescView_widget_AutoCompleteTextView_completionHint(this));
    addAttrDescAN(new AttrDescView_widget_AutoCompleteTextView_completionHintView(this));
    addAttrDescAN(new AttrDescReflecMethodInt(this, "completionThreshold", "setThreshold", 2));
    addAttrDescAN(new AttrDescReflecMethodId(this, "dropDownAnchor", -1));
    addAttrDescAN(new AttrDescReflecMethodDimensionWithNameInt(this, "dropDownHeight", (float) ViewGroup.LayoutParams.WRAP_CONTENT));
    addAttrDescAN(new AttrDescReflecMethodDimensionIntFloor(this, "dropDownHorizontalOffset", 0.0f));
    addAttrDescAN(new AttrDescReflecFieldMethodDrawable(this, "dropDownSelector", "mPopup", ListPopupWindow.class, "setListSelector", null)); // Hay un background por defecto de Android en ListPopupWindow aunque parece que por defecto se pone un null si no hay atributo
    addAttrDescAN(new AttrDescReflecMethodDimensionIntFloor(this, "dropDownVerticalOffset", 0.0f));
    addAttrDescAN(new AttrDescReflecMethodDimensionWithNameInt(this, "dropDownWidth", (float) ViewGroup.LayoutParams.WRAP_CONTENT));
    addAttrDescAN(new AttrDescReflecMethodDrawable(this, "popupBackground", "setDropDownBackgroundDrawable", "@null"));
}
项目:musicalgps    文件:RegionEditor.java   
@Override
public void onClick(View v) {
    //TODO: refactor/redesign
    final int regionId = v.getId();
    final List<Integer> listsRegionsId = mRegionsDB.getAllThemesIds();
    final ListPopupWindow listThemesPopupWindow = new ListPopupWindow(mActivity);
    listThemesPopupWindow.setAdapter(new ArrayAdapter<String>(mActivity, R.layout.list_item_theme, mRegionsDB.getAllThemesNames()));
    listThemesPopupWindow.setModal(true);
       listThemesPopupWindow.setAnchorView(v);
    OnItemClickListener itemClickListener = new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            changeTheme(regionId, listsRegionsId.get(position));
            listThemesPopupWindow.dismiss();
            ((EditorActivity)mActivity).refreshTable();
            }           
        };
    listThemesPopupWindow.setOnItemClickListener(itemClickListener); 
    listThemesPopupWindow.show();       
}
项目:sms_DualCard    文件:RecipientEditTextView.java   
private void showAddress(final RecipientChip currentChip, final ListPopupWindow popup,
        int width, Context context) {
    int line = getLayout().getLineForOffset(getChipStart(currentChip));
    int bottom = calculateOffsetFromBottom(line);
    // Align the alternates popup with the left side of the View,
    // regardless of the position of the chip tapped.
    popup.setWidth(width);
    popup.setAnchorView(this);
    popup.setVerticalOffset(bottom);
    popup.setAdapter(createSingleAddressAdapter(currentChip));
    popup.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            unselectChip(currentChip);
            popup.dismiss();
        }
    });
    popup.show();
    ListView listView = popup.getListView();
    listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    listView.setItemChecked(0, true);
}
项目:ChipsLibrary    文件:RecipientEditTextView.java   
private void showAddress(final DrawableRecipientChip currentChip,final ListPopupWindow popup,final int width)
{
if(!mAttachedToWindow)
  return;
final int line=getLayout().getLineForOffset(getChipStart(currentChip));
final int bottom=calculateOffsetFromBottom(line);
// Align the alternates popup with the left side of the View,
// regardless of the position of the chip tapped.
popup.setWidth(width);
popup.setAnchorView(this);
popup.setVerticalOffset(bottom);
popup.setAdapter(createSingleAddressAdapter(currentChip));
popup.setOnItemClickListener(new OnItemClickListener()
  {
    @Override
    public void onItemClick(final AdapterView<?> parent,final View view,final int position,final long id)
      {
      unselectChip(currentChip);
      popup.dismiss();
      }
  });
popup.show();
final ListView listView=popup.getListView();
listView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
listView.setItemChecked(0,true);
}
项目:cwac-security    文件:MainActivity.java   
protected void showListPopupWindow() {
  ArrayAdapter<String> adapter=
    new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,
      ITEMS);
  final ListPopupWindow popup=new ListPopupWindow(this);

  popup.setAnchorView(popupAnchor);
  popup.setAdapter(adapter);
  popup.setOnItemClickListener(
    new AdapterView.OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> parent, View view,
                              int position, long id) {
        popup.dismiss();
      }
    });
  popup.show();
}
项目:ESCAPE    文件:ExpandableEventListFragment.java   
private void initPopup() {
    View menuItemView = getActivity().findViewById(R.id.pick_category);
    listPopupWindow = new ListPopupWindow(getActivity());
    listPopupWindow.setAnchorView(menuItemView);
    listPopupWindow.setModal(true);
    listPopupWindow.setWidth(categoryListWidth);
    listPopupWindow.setHeight(ListPopupWindow.WRAP_CONTENT);
    listPopupWindow
            .setOnDismissListener(new PopupWindow.OnDismissListener() {
                @Override
                public void onDismiss() {
                    if (listAdapter != null)
                        listAdapter.notifyDataSetChanged();
                }
            });
}
项目:ESCAPE    文件:TaskListFragment.java   
private void initPopup() {
    View menuItemView = getActivity().findViewById(R.id.pick_category);
    listPopupWindow = new ListPopupWindow(getActivity());
    listPopupWindow.setAnchorView(menuItemView);
    listPopupWindow.setModal(true);
    listPopupWindow.setWidth(categoryListWidth);
    listPopupWindow.setHeight(ListPopupWindow.WRAP_CONTENT);
    listPopupWindow
            .setOnDismissListener(new PopupWindow.OnDismissListener() {
                @Override
                public void onDismiss() {
                    if (ourListAdapter != null)
                        ourListAdapter.notifyDataSetChanged();
                }
            });
}
项目:Calendar_lunar    文件:RecipientEditTextView.java   
private void showAddress(final RecipientChip currentChip, final ListPopupWindow popup,
        int width, Context context) {
    int line = getLayout().getLineForOffset(getChipStart(currentChip));
    int bottom = calculateOffsetFromBottom(line);
    // Align the alternates popup with the left side of the View,
    // regardless of the position of the chip tapped.
    popup.setWidth(width);
    popup.setAnchorView(this);
    popup.setVerticalOffset(bottom);
    popup.setAdapter(createSingleAddressAdapter(currentChip));
    popup.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            unselectChip(currentChip);
            popup.dismiss();
        }
    });
    popup.show();
    ListView listView = popup.getListView();
    listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    listView.setItemChecked(0, true);
}
项目:mobile-client    文件:TracksDropdownFragment.java   
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    mRootView = (ViewGroup) inflater.inflate(
            R.layout.fragment_tracks_dropdown, null);

    mTitle = (TextView) mRootView.findViewById(R.id.track_title);
    mAbstract = (TextView) mRootView.findViewById(R.id.track_abstract);

    mRootView.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            mListPopupWindow = new ListPopupWindow(getActivity());
            mListPopupWindow.setAdapter(mAdapter);
            mListPopupWindow.setModal(true);
            mListPopupWindow.setContentWidth(400);
            mListPopupWindow.setAnchorView(mRootView);
            mListPopupWindow
                    .setOnItemClickListener(TracksDropdownFragment.this);
            mListPopupWindow.show();
            mListPopupWindow
                    .setOnDismissListener(TracksDropdownFragment.this);
        }
    });

    return mRootView;
}
项目:mobile-client    文件:TracksDropdownFragment.java   
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    mRootView = (ViewGroup) inflater.inflate(
            R.layout.fragment_tracks_dropdown, null);

    mTitle = (TextView) mRootView.findViewById(R.id.track_title);
    mAbstract = (TextView) mRootView.findViewById(R.id.track_abstract);

    mRootView.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            mListPopupWindow = new ListPopupWindow(getActivity());
            mListPopupWindow.setAdapter(mAdapter);
            mListPopupWindow.setModal(true);
            mListPopupWindow.setContentWidth(400);
            mListPopupWindow.setAnchorView(mRootView);
            mListPopupWindow
                    .setOnItemClickListener(TracksDropdownFragment.this);
            mListPopupWindow.show();
            mListPopupWindow
                    .setOnDismissListener(TracksDropdownFragment.this);
        }
    });

    return mRootView;
}
项目:google-iosched    文件:TracksDropdownFragment.java   
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    mRootView = (ViewGroup) inflater.inflate(R.layout.fragment_tracks_dropdown, null);
    mTitle = (TextView) mRootView.findViewById(R.id.track_title);
    mAbstract = (TextView) mRootView.findViewById(R.id.track_abstract);

    mRootView.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            mListPopupWindow = new ListPopupWindow(getActivity());
            mListPopupWindow.setAdapter(mAdapter);
            mListPopupWindow.setModal(true);
            mListPopupWindow.setContentWidth(
                    getResources().getDimensionPixelSize(R.dimen.track_dropdown_width));
            mListPopupWindow.setAnchorView(mRootView);
            mListPopupWindow.setOnItemClickListener(TracksDropdownFragment.this);
            mListPopupWindow.show();
            mListPopupWindow.setOnDismissListener(TracksDropdownFragment.this);
        }
    });
    return mRootView;
}
项目:iosched2013    文件:TracksDropdownFragment.java   
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    mRootView = (ViewGroup) inflater.inflate(R.layout.fragment_tracks_dropdown, null);
    mIcon = (ImageView) mRootView.findViewById(R.id.track_icon);
    mTitle = (TextView) mRootView.findViewById(R.id.track_title);
    mAbstract = (TextView) mRootView.findViewById(R.id.track_abstract);

    mRootView.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            mListPopupWindow = new ListPopupWindow(getActivity());
            mListPopupWindow.setAdapter(mAdapter);
            mListPopupWindow.setModal(true);
            mListPopupWindow.setContentWidth(
                    getResources().getDimensionPixelSize(R.dimen.track_dropdown_width));
            mListPopupWindow.setAnchorView(mRootView);
            mListPopupWindow.setOnItemClickListener(TracksDropdownFragment.this);
            mListPopupWindow.show();
            mListPopupWindow.setOnDismissListener(TracksDropdownFragment.this);
        }
    });
    return mRootView;
}
项目:NovelReader    文件:SelectorView.java   
private void createPopWindow(){
    popupWindow = new ListPopupWindow(getContext());
    popupAdapter = new SelectorAdapter();
    popupWindow.setAnchorView(parent.getChildAt(0));
    popupWindow.setAdapter(popupAdapter);
    popupWindow.setWidth(WindowManager.LayoutParams.MATCH_PARENT);
    popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
    //获取焦点
    popupWindow.setModal(true);

    popupWindow.setOnItemClickListener(this);
    popupWindow.setOnDismissListener(this);
}
项目:chromium-for-android-56-debug-video    文件:AppMenu.java   
private void setPopupOffset(
        ListPopupWindow popup, int screenRotation, Rect appRect, Rect padding) {
    int[] anchorLocation = new int[2];
    popup.getAnchorView().getLocationInWindow(anchorLocation);
    int anchorHeight = popup.getAnchorView().getHeight();

    // If we have a hardware menu button, locate the app menu closer to the estimated
    // hardware menu button location.
    if (mIsByPermanentButton) {
        int horizontalOffset = -anchorLocation[0];
        switch (screenRotation) {
            case Surface.ROTATION_0:
            case Surface.ROTATION_180:
                horizontalOffset += (appRect.width() - mPopup.getWidth()) / 2;
                break;
            case Surface.ROTATION_90:
                horizontalOffset += appRect.width() - mPopup.getWidth();
                break;
            case Surface.ROTATION_270:
                break;
            default:
                assert false;
                break;
        }
        popup.setHorizontalOffset(horizontalOffset);
        // The menu is displayed above the anchored view, so shift the menu up by the bottom
        // padding of the background.
        popup.setVerticalOffset(-padding.bottom);
    } else {
        // The menu is displayed over and below the anchored view, so shift the menu up by the
        // height of the anchor view.
        popup.setVerticalOffset(-mNegativeSoftwareVerticalOffset - anchorHeight);
    }
}
项目:chromium-for-android-56-debug-video    文件:AppMenuDragHelper.java   
AppMenuDragHelper(Activity activity, AppMenu appMenu, int itemRowHeight) {
    mActivity = activity;
    mAppMenu = appMenu;
    mItemRowHeight = itemRowHeight;
    Resources res = mActivity.getResources();
    mAutoScrollFullVelocity = res.getDimensionPixelSize(R.dimen.auto_scroll_full_velocity);
    // If user is dragging and the popup ListView is too big to display at once,
    // mDragScrolling animator scrolls mPopup.getListView() automatically depending on
    // the user's touch position.
    mDragScrolling.setTimeListener(new TimeAnimator.TimeListener() {
        @Override
        public void onTimeUpdate(TimeAnimator animation, long totalTime, long deltaTime) {
            ListPopupWindow popup = mAppMenu.getPopup();
            if (popup == null || popup.getListView() == null) return;

            // We keep both mDragScrollOffset and mDragScrollOffsetRounded because
            // the actual scrolling is by the rounded value but at the same time we also
            // want to keep the precise scroll value in float.
            mDragScrollOffset += (deltaTime * 0.001f) * mDragScrollingVelocity;
            int diff = Math.round(mDragScrollOffset - mDragScrollOffsetRounded);
            mDragScrollOffsetRounded += diff;
            popup.getListView().smoothScrollBy(diff, 0);

            // Force touch move event to highlight items correctly for the scrolled position.
            if (!Float.isNaN(mLastTouchX) && !Float.isNaN(mLastTouchY)) {
                menuItemAction(Math.round(mLastTouchX), Math.round(mLastTouchY),
                        ITEM_ACTION_HIGHLIGHT);
            }
        }
    });

    // We use medium timeout, the average of tap and long press timeouts. This is consistent
    // with ListPopupWindow#ForwardingListener implementation.
    mTapTimeout =
            (ViewConfiguration.getTapTimeout() + ViewConfiguration.getLongPressTimeout()) / 2;
    mScaledTouchSlop = ViewConfiguration.get(activity).getScaledTouchSlop();
}
项目:aos-MediaLib    文件:ActionBarSubmenu.java   
/*******************************************************************
** ActionBarSubmenu API
*******************************************************************/

public ActionBarSubmenu(Context context, LayoutInflater inflater, View anchor) {
    mContext = context;

    mItemList = new ArrayList<SubmenuItemData>();
    mSelectedPosition = 0;   // default value
    mSubmenuItemTitleMaxWidth = 0;

    mAdapter = new ActionBarSubmenuAdapter(inflater);

    mPopupWindow = new ListPopupWindow(context, null);
    mPopupWindow.setAdapter(mAdapter);
    mPopupWindow.setModal(true);
    mPopupWindow.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(context,R.color.primary_material_dark)));
    mPopupWindow.setAnchorView(anchor);
    mPopupWindow.setOnItemClickListener(this);

    // Get the size of the font used to display the submenu items
    TypedValue typedValue = new TypedValue();
    context.getTheme().resolveAttribute(android.R.attr.textAppearanceLarge, typedValue, true);
    int[] attribute = new int[] { android.R.attr.textSize };
    TypedArray array = context.obtainStyledAttributes(typedValue.resourceId, attribute);
    mSubmenuFontSize = array.getDimensionPixelSize(0, -1);
    array.recycle();

    // Get the size of the radio button bitmap
    mRadioButtonWidth = context.getResources().getDimensionPixelSize(R.dimen.radio_button_width);
}
项目:Edit-Spinner    文件:EditSpinner.java   
protected void performCompletion(View selectedView, int position, long id) {
    if (isPopupShowing()) {
        Object selectedItem;
        if (position < 0) {
            selectedItem = mPopup.getSelectedItem();
        } else {
            selectedItem = mAdapter.getItem(position);
        }
        if (selectedItem == null) {
            if (DEBUG) {
                Log.w(TAG, "performCompletion: no selected item");
            }
            return;
        }

        selectItem(selectedItem);

        if (mItemClickListener != null) {
            final ListPopupWindow list = mPopup;

            if (selectedView == null || position < 0) {
                selectedView = list.getSelectedView();
                position = list.getSelectedItemPosition();
                id = list.getSelectedItemId();
            }
            mItemClickListener.onItemClick(list.getListView(), selectedView, position, id);
        }
    }

    if (mDropDownDismissedOnCompletion) {
        dismissDropDown();
    }
}
项目:talk-android    文件:TextChipsEditView.java   
public TextChipsEditView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setChipDimensions(context, attrs);
        if (sSelectedTextColor == -1) {
            sSelectedTextColor = context.getResources().getColor(android.R.color.white);
        }

        DisplayMetrics metrics = getResources().getDisplayMetrics();
        bitmapSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, metrics);

        setInputType(getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
//        setOnItemClickListener(this);
        setCustomSelectionActionModeCallback(this);
        mHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                if (msg.what == DISMISS) {
                    ((ListPopupWindow) msg.obj).dismiss();
                    return;
                }
                super.handleMessage(msg);
            }
        };
        mTextWatcher = new RecipientTextWatcher();
        addTextChangedListener(mTextWatcher);
        setOnEditorActionListener(this);

        setDropdownChipLayouter(new DropdownChipLayouter(LayoutInflater.from(context), context));
    }
项目:YinjiImageEditor    文件:PhotoMutiSelectActivity.java   
/** 创建弹出的ListView */
private void createPopupFolderList(int width, int height) {
    mFolderPopupWindow = new ListPopupWindow(this);
    mFolderPopupWindow.setBackgroundDrawable(null);
    mFolderPopupWindow.setAdapter(mImageFolderAdapter);
    mFolderPopupWindow.setContentWidth(width);
    mFolderPopupWindow.setWidth(width);  //如果不设置,就是 AnchorView 的宽度
    mFolderPopupWindow.setHeight(height * 5 / 8);
    mFolderPopupWindow.setAnchorView(mFooterBar);  //ListPopupWindow总会相对于这个View
    mFolderPopupWindow.setModal(false);  //是否为模态,影响返回键的处理
    mFolderPopupWindow.setAnimationStyle(R.style.popupwindow_anim_style);
    mFolderPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
        @Override
        public void onDismiss() {
            backgroundAlpha(1.0f);
        }
    });
    mFolderPopupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
            mImageFolderAdapter.setSelectIndex(position);
            imagePicker.setCurrentImageFolderPosition(position);
            mFolderPopupWindow.dismiss();
            ImageFolder imageFolder = (ImageFolder) adapterView.getAdapter().getItem(position);
            if (null != imageFolder) {
                mImageGridAdapter.refreshData(imageFolder.images);
                mBtnDir.setText(imageFolder.name);
            }
            gv_photo_list.smoothScrollToPosition(0);//滑动到顶部
        }
    });
}
项目:truth-android    文件:ListPopupWindowSubject.java   
public static SubjectFactory<ListPopupWindowSubject, ListPopupWindow> type() {
  return new SubjectFactory<ListPopupWindowSubject, ListPopupWindow>() {
    @Override
    public ListPopupWindowSubject getSubject(FailureStrategy fs, ListPopupWindow that) {
      return new ListPopupWindowSubject(fs, that);
    }
  };
}
项目:AndroidChromium    文件:AppMenu.java   
private void setPopupOffset(
        ListPopupWindow popup, int screenRotation, Rect appRect, Rect padding) {
    int[] anchorLocation = new int[2];
    popup.getAnchorView().getLocationInWindow(anchorLocation);
    int anchorHeight = popup.getAnchorView().getHeight();

    // If we have a hardware menu button, locate the app menu closer to the estimated
    // hardware menu button location.
    if (mIsByPermanentButton) {
        int horizontalOffset = -anchorLocation[0];
        switch (screenRotation) {
            case Surface.ROTATION_0:
            case Surface.ROTATION_180:
                horizontalOffset += (appRect.width() - mPopup.getWidth()) / 2;
                break;
            case Surface.ROTATION_90:
                horizontalOffset += appRect.width() - mPopup.getWidth();
                break;
            case Surface.ROTATION_270:
                break;
            default:
                assert false;
                break;
        }
        popup.setHorizontalOffset(horizontalOffset);
        // The menu is displayed above the anchored view, so shift the menu up by the bottom
        // padding of the background.
        popup.setVerticalOffset(-padding.bottom);
    } else {
        // The menu is displayed over and below the anchored view, so shift the menu up by the
        // height of the anchor view.
        popup.setVerticalOffset(-mNegativeSoftwareVerticalOffset - anchorHeight);
    }
}
项目:AndroidChromium    文件:AppMenuDragHelper.java   
AppMenuDragHelper(Activity activity, AppMenu appMenu, int itemRowHeight) {
    mActivity = activity;
    mAppMenu = appMenu;
    mItemRowHeight = itemRowHeight;
    Resources res = mActivity.getResources();
    mAutoScrollFullVelocity = res.getDimensionPixelSize(R.dimen.auto_scroll_full_velocity);
    // If user is dragging and the popup ListView is too big to display at once,
    // mDragScrolling animator scrolls mPopup.getListView() automatically depending on
    // the user's touch position.
    mDragScrolling.setTimeListener(new TimeAnimator.TimeListener() {
        @Override
        public void onTimeUpdate(TimeAnimator animation, long totalTime, long deltaTime) {
            ListPopupWindow popup = mAppMenu.getPopup();
            if (popup == null || popup.getListView() == null) return;

            // We keep both mDragScrollOffset and mDragScrollOffsetRounded because
            // the actual scrolling is by the rounded value but at the same time we also
            // want to keep the precise scroll value in float.
            mDragScrollOffset += (deltaTime * 0.001f) * mDragScrollingVelocity;
            int diff = Math.round(mDragScrollOffset - mDragScrollOffsetRounded);
            mDragScrollOffsetRounded += diff;
            popup.getListView().smoothScrollBy(diff, 0);

            // Force touch move event to highlight items correctly for the scrolled position.
            if (!Float.isNaN(mLastTouchX) && !Float.isNaN(mLastTouchY)) {
                menuItemAction(Math.round(mLastTouchX), Math.round(mLastTouchY),
                        ITEM_ACTION_HIGHLIGHT);
            }
        }
    });

    // We use medium timeout, the average of tap and long press timeouts. This is consistent
    // with ListPopupWindow#ForwardingListener implementation.
    mTapTimeout =
            (ViewConfiguration.getTapTimeout() + ViewConfiguration.getLongPressTimeout()) / 2;
    mScaledTouchSlop = ViewConfiguration.get(activity).getScaledTouchSlop();
}
项目:EditSpinner    文件:EditSpinner.java   
private void initPopupWindow() {
    popupWindow = new ListPopupWindow(mContext) {

        @Override
        public void show() {
            super.show();
            mRightImageTopView.setClickable(true);
            mRightIv.startAnimation(mAnimation);
        }

        @Override
        public void dismiss() {
            super.dismiss();
        }

    };
    popupWindow.setOnItemClickListener(this);
    popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
    popupWindow.setPromptPosition(ListPopupWindow.POSITION_PROMPT_BELOW);
    popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
    popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
    popupWindow.setAnchorView(editText);
    popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
        @Override
        public void onDismiss() {
            popupWindowHideTime = System.currentTimeMillis();
            mRightIv.startAnimation(mResetAnimation);
        }
    });
}
项目:Vafrinn    文件:AppMenu.java   
private void setPopupOffset(
        ListPopupWindow popup, int screenRotation, Rect appRect, Rect padding) {
    int[] anchorLocation = new int[2];
    popup.getAnchorView().getLocationInWindow(anchorLocation);
    int anchorHeight = popup.getAnchorView().getHeight();

    // If we have a hardware menu button, locate the app menu closer to the estimated
    // hardware menu button location.
    if (mIsByHardwareButton) {
        int horizontalOffset = -anchorLocation[0];
        switch (screenRotation) {
            case Surface.ROTATION_0:
            case Surface.ROTATION_180:
                horizontalOffset += (appRect.width() - mPopup.getWidth()) / 2;
                break;
            case Surface.ROTATION_90:
                horizontalOffset += appRect.width() - mPopup.getWidth();
                break;
            case Surface.ROTATION_270:
                break;
            default:
                assert false;
                break;
        }
        popup.setHorizontalOffset(horizontalOffset);
        // The menu is displayed above the anchored view, so shift the menu up by the bottom
        // padding of the background.
        popup.setVerticalOffset(-padding.bottom);
    } else {
        // The menu is displayed over and below the anchored view, so shift the menu up by the
        // height of the anchor view.
        popup.setVerticalOffset(-mNegativeSoftwareVerticalOffset - anchorHeight);
    }
}
项目:Vafrinn    文件:AppMenuDragHelper.java   
AppMenuDragHelper(Activity activity, AppMenu appMenu, int itemRowHeight) {
    mActivity = activity;
    mAppMenu = appMenu;
    mItemRowHeight = itemRowHeight;
    Resources res = mActivity.getResources();
    mAutoScrollFullVelocity = res.getDimensionPixelSize(R.dimen.auto_scroll_full_velocity);
    // If user is dragging and the popup ListView is too big to display at once,
    // mDragScrolling animator scrolls mPopup.getListView() automatically depending on
    // the user's touch position.
    mDragScrolling.setTimeListener(new TimeAnimator.TimeListener() {
        @Override
        public void onTimeUpdate(TimeAnimator animation, long totalTime, long deltaTime) {
            ListPopupWindow popup = mAppMenu.getPopup();
            if (popup == null || popup.getListView() == null) return;

            // We keep both mDragScrollOffset and mDragScrollOffsetRounded because
            // the actual scrolling is by the rounded value but at the same time we also
            // want to keep the precise scroll value in float.
            mDragScrollOffset += (deltaTime * 0.001f) * mDragScrollingVelocity;
            int diff = Math.round(mDragScrollOffset - mDragScrollOffsetRounded);
            mDragScrollOffsetRounded += diff;
            popup.getListView().smoothScrollBy(diff, 0);

            // Force touch move event to highlight items correctly for the scrolled position.
            if (!Float.isNaN(mLastTouchX) && !Float.isNaN(mLastTouchY)) {
                menuItemAction(Math.round(mLastTouchX), Math.round(mLastTouchY),
                        ITEM_ACTION_HIGHLIGHT);
            }
        }
    });

    // We use medium timeout, the average of tap and long press timeouts. This is consistent
    // with ListPopupWindow#ForwardingListener implementation.
    mTapTimeout =
            (ViewConfiguration.getTapTimeout() + ViewConfiguration.getLongPressTimeout()) / 2;
    mScaledTouchSlop = ViewConfiguration.get(activity).getScaledTouchSlop();
}
项目:365browser    文件:AppMenuDragHelper.java   
AppMenuDragHelper(Activity activity, AppMenu appMenu, int itemRowHeight) {
    mActivity = activity;
    mAppMenu = appMenu;
    mItemRowHeight = itemRowHeight;
    Resources res = mActivity.getResources();
    mAutoScrollFullVelocity = res.getDimensionPixelSize(R.dimen.auto_scroll_full_velocity);
    // If user is dragging and the popup ListView is too big to display at once,
    // mDragScrolling animator scrolls mPopup.getListView() automatically depending on
    // the user's touch position.
    mDragScrolling.setTimeListener(new TimeAnimator.TimeListener() {
        @Override
        public void onTimeUpdate(TimeAnimator animation, long totalTime, long deltaTime) {
            ListPopupWindow popup = mAppMenu.getPopup();
            if (popup == null || popup.getListView() == null) return;

            // We keep both mDragScrollOffset and mDragScrollOffsetRounded because
            // the actual scrolling is by the rounded value but at the same time we also
            // want to keep the precise scroll value in float.
            mDragScrollOffset += (deltaTime * 0.001f) * mDragScrollingVelocity;
            int diff = Math.round(mDragScrollOffset - mDragScrollOffsetRounded);
            mDragScrollOffsetRounded += diff;
            popup.getListView().smoothScrollBy(diff, 0);

            // Force touch move event to highlight items correctly for the scrolled position.
            if (!Float.isNaN(mLastTouchX) && !Float.isNaN(mLastTouchY)) {
                menuItemAction(Math.round(mLastTouchX), Math.round(mLastTouchY),
                        ITEM_ACTION_HIGHLIGHT);
            }
        }
    });

    // We use medium timeout, the average of tap and long press timeouts. This is consistent
    // with ListPopupWindow#ForwardingListener implementation.
    mTapTimeout =
            (ViewConfiguration.getTapTimeout() + ViewConfiguration.getLongPressTimeout()) / 2;
    mScaledTouchSlop = ViewConfiguration.get(activity).getScaledTouchSlop();
}
项目:TLint    文件:GalleryActivity.java   
private void createPopupFolderList() {
    mFolderPopupWindow = new ListPopupWindow(this);
    mFolderPopupWindow.setAdapter(mFolderAdapter);
    mFolderPopupWindow.setContentWidth(ListPopupWindow.MATCH_PARENT);
    mFolderPopupWindow.setWidth(ListPopupWindow.MATCH_PARENT);
    mFolderPopupWindow.setHeight(ListPopupWindow.MATCH_PARENT);
    mFolderPopupWindow.setAnchorView(toolbar);
    mFolderPopupWindow.setModal(true);
    mFolderPopupWindow.setAnimationStyle(R.style.popwindow_anim_style);
    mFolderPopupWindow.setOnItemClickListener(this);
}
项目:FlexibleAdapter    文件:BottomSheetSectionDialog.java   
private void createPopUps() {
    //Create the Adapter
    if (mAdapterReference == null) {
        mAdapterItemType = new ArrayAdapter(getContext(), R.layout.reference_spinner_item, new String[]{"Simple Item", "Expandable", "Expandable Section", "Section"});
        mAdapterReference = new ArrayAdapter(getContext(), R.layout.reference_spinner_item, getListener().getReferenceList());
    }
    //Setting up the popups
    Log.d(TAG, "Setting up the Popups");
    //Item Type
    mPopupItemType = new ListPopupWindow(getContext());
    mPopupItemType.setAnchorView(mBottomSheetDialog.findViewById(R.id.select_item_type));
    mPopupItemType.setModal(true);
    mPopupItemType.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NOT_NEEDED);
    mPopupItemType.setAnimationStyle(android.R.style.Animation_Dialog);
    mPopupItemType.setAdapter(mAdapterItemType);
    mPopupItemType.setVerticalOffset(-100);

    //Header Reference
    mPopupReference = new ListPopupWindow(getContext());
    mPopupReference.setAnchorView(mBottomSheetDialog.findViewById(R.id.select_reference_button));
    mPopupReference.setModal(true);
    mPopupReference.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NOT_NEEDED);
    mPopupReference.setAnimationStyle(android.R.style.Animation_Dialog);
    mPopupReference.setAdapter(mAdapterReference);
    mPopupReference.setVerticalOffset(-100);
    if (mAdapterReference.getCount() > 6)
        mPopupReference.setHeight(getResources().getDimensionPixelSize(R.dimen.popup_max_height));
}
项目:GreenMatter    文件:ButtonFragment.java   
@Override public boolean onLongClick(View v) {
    String[] versions = { "Camera", "Laptop", "Watch", "Smartphone",
            "Television" };
    final ListPopupWindow listPopupWindow = new ListPopupWindow(
            getActivity());
    listPopupWindow.setAdapter(new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_dropdown_item_1line, versions));
    listPopupWindow.setAnchorView(mListPopupButton);
    listPopupWindow.setWidth(300);
    listPopupWindow.setHeight(400);

    listPopupWindow.setModal(true);
    listPopupWindow.show();
    return false;
}
项目:FullRobolectricTestSample    文件:ListPopupWindowTest.java   
@Test
public void show_setsLastListPopupWindow() throws Exception {
  Context context = Robolectric.application;
  ListPopupWindow popupWindow = new ListPopupWindow(context);
  assertThat(ShadowListPopupWindow.getLatestListPopupWindow()).isNull();
  popupWindow.setAnchorView(new View(context));
  popupWindow.show();
  assertThat(ShadowListPopupWindow.getLatestListPopupWindow()).isSameAs(popupWindow);
}
项目:sms_DualCard    文件:RecipientEditTextView.java   
public RecipientEditTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    setChipDimensions(context, attrs);
    if (sSelectedTextColor == -1) {
        sSelectedTextColor = context.getResources().getColor(android.R.color.white);
    }
    mAlternatesPopup = new ListPopupWindow(context);
    mAddressPopup = new ListPopupWindow(context);
    mCopyDialog = new Dialog(context);
    mAlternatesListener = new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView,View view, int position,
                long rowId) {
            mAlternatesPopup.setOnItemClickListener(null);
            replaceChip(mSelectedChip, ((RecipientAlternatesAdapter) adapterView.getAdapter())
                    .getRecipientEntry(position));
            Message delayed = Message.obtain(mHandler, DISMISS);
            delayed.obj = mAlternatesPopup;
            mHandler.sendMessageDelayed(delayed, DISMISS_DELAY);
            clearComposingText();
        }
    };
    setInputType(getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
    setOnItemClickListener(this);
    setCustomSelectionActionModeCallback(this);
    mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == DISMISS) {
                ((ListPopupWindow) msg.obj).dismiss();
                return;
            }
            super.handleMessage(msg);
        }
    };
    mTextWatcher = new RecipientTextWatcher();
    addTextChangedListener(mTextWatcher);
    mGestureDetector = new GestureDetector(context, this);
    setOnEditorActionListener(this);
}