我可以通过下面的代码在屏幕的最左边显示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();