我试图创建非常类似的布局,如谷歌播放图书。我需要创建一个PopupMenu或PopupWindow,它将显示在相同的位置,如下图所示。

我不确定是PopupMenu还是PopupWindow还是其他什么东西。当我单击菜单中的项目时,会显示此“窗口”。
如果我将一个方向更改为景观模式,在ActionBar中是一个新的图标,它显示了这个“窗口”。下图显示了这种情况:

我有两个问题:
PopupMenu,PopupWindow还是别的什么?PopupWindow,而我需要显示它?发布于 2014-07-23 14:44:55
您必须创建这样一个OnClickListener:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int[] location = new int[2];
v.getLocationOnScreen(location);
// Initialize the Point with x, and y positions
Point point = new Point();
point.x = location[0];
point.y = location[1];
popupWindow(v, point);
}
});popupWindow(View view, Point point)的实现方法
private ArrayAdapter<String> adapterTypeSelection;
private void popupWindow(View v, Point p) {
// int popupwindowWidth =
// UnitConverterClass.convertDpToPx(180,getActivity());
int popupwindowHeight = LinearLayout.LayoutParams.WRAP_CONTENT;
LayoutInflater layoutInflater = (LayoutInflater) getActivity()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = layoutInflater.inflate(
R.layout.dashboard_profile_popup_window, null);
// Creating the PopupWindow
final PopupWindow pwindow = new PopupWindow(getActivity());
pwindow.setContentView(layout);
// pwindow.showAsDropDown(v);
// pwindow.setWidth(popupwindowWidth);
pwindow.setHeight(popupwindowHeight);
pwindow.setFocusable(true);
String[] types = {"hello", "hi"};
adapterTypeSelection = new ArrayAdapter<String>(getActivity(),
R.layout.<your layout for the popupwindow>,
R.id.textView, types);
ListView listview = (ListView) pwindow.getContentView().findViewById(
R.id.listview_popwindow);
listview.setAdapter(adapterTypeSelection);
listview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
TextView temp = (TextView) parent.getChildAt(position)
.findViewById(R.id.textView);
if (temp.getText()
.toString()
.equals("hello"))) {
//hello
} else {
//hi
}
pwindow.dismiss();
}
});
pwindow.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss() {
//TODO dismiss settings
}
});
pwindow.setWidth(<width>);
pwindow.setBackgroundDrawable(<resource for background>);
// int OFFSET_X = UnitConverterClass.convertDpToPx(180, getActivity());
// int OFFSET_Y = UnitConverterClass.convertDpToPx(30, getActivity());
// pwindow.showAtLocation(layout, Gravity.NO_GRAVITY,
// p.x + OFFSET_X, p.y + OFFSET_Y);
pwindow.showAtLocation(layout, Gravity.NO_GRAVITY, p.x, p.y);
}希望这有助于使PopupWindow在您想要显示的位置。
https://stackoverflow.com/questions/24913254
复制相似问题