我可以通过下面的代码在屏幕的最左边显示listpopupwindow。

@Override
public View onCreateActionView() {
    LayoutInflater layoutInflater = LayoutInflater.from(mContext);

    final View actionItem = layoutInflater.inflate(R.layout.list_table_view_action_provider, null);

    final ImageButton button = (ImageButton) actionItem.findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mListPopupWindow = new ListPopupWindow(mContext);
            mListPopupWindow.setAnchorView(actionItem);
            mListPopupWindow.setAdapter(mAdapter);
            mListPopupWindow.setModal(true);
            mListPopupWindow.setContentWidth(150);

            // Display mListPopupWindow on most left of the screen
            mListPopupWindow.setHorizontalOffset(-1000);


            mListPopupWindow.setOnItemClickListener(ListTableViewActionProvider.this);

            mListPopupWindow.show();
            mListPopupWindow.setOnDismissListener(ListTableViewActionProvider.this);
        }
    });

    return actionItem;
}

“mlistPopupWindow.setHorizontalOffset(-1000);”太糟糕。
还有别的办法吗?

最佳答案

下面是ListPopupWindow示例,

        View  menuItemView = getActivity().findViewById( R.id.menu_filter );
        ListPopupWindow popup        = new ListPopupWindow( getActivity() );

        popup.setHorizontalOffset( -200 );
        popup.setVerticalOffset( -100 );

        popup.setAnchorView( menuItemView );
        popup.setWidth( 400 );
        popup.setModal( true );
        popup.setHeight( ListPopupWindow.WRAP_CONTENT );

        ListAdapter adapter = new MyAdapter( getActivity());
        popup.setAdapter( adapter );

        popup.show();

08-26 06:40