在特定位置打开 android 菜单
Open android menu on a specific place
我知道如何使用 Java 或 XML 制作 android 菜单以及如何使用或调用,但现在我面临一个新情况,即我想在特定的地方,比如当我点击图片而不是那个图片地方的菜单弹出窗口时。
我该怎么做?
以下代码将帮助您在动态位置打开弹出窗口:
public void showMenuPopUp(final View view, final Context mCtx ) {
LayoutInflater layoutInflater = (LayoutInflater) mCtx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.menu_popup, null);
popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, true);
popupWindow.setFocusable(true);
popupWindow.update();
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setOutsideTouchable(true);
popupWindow.setTouchInterceptor(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
popupWindow.dismiss();
return true;
}
return false;
}
});
Button btn1= (Button) popupView.findViewById(R.id.btn1);
Button (new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// button click event
popupWindow.dismiss();
}
});
popupWindow.showAsDropDown(view, 0, 0);
}
其中 view 是您必须打开弹出窗口的视图
要在图像上打开此弹出窗口,请点击像这样在您的图像上写入 onClickLsitener:
ImageView img = (ImageView) findViewById(R.id.myImageId);
img.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// your code here
showMenuPopUp(v,Activity.this);
}
});
我回答过类似的问题 here ,我在那个例子中使用了 PopUpWindow ,你也可以使用 DialogFragment 但稍微最小选项,都支持自定义布局,看起来像菜单。您可以对您在屏幕中单击的按钮或操作栏按钮执行类似的选项
您有两个选项,二是使用弹出窗口执行此操作,单击一个按钮,您可以执行 1)showAsDropDown(findViewbyId(R.id.menuitem),0,0)
弹出窗口,这很好,因为它看起来像是从您单击的按钮弹出的,或者
2)showAtLocation()
像 X 和 Y 这样的重力 属性 位置,你可以提及您希望菜单出现在屏幕上的哪个位置
我知道如何使用 Java 或 XML 制作 android 菜单以及如何使用或调用,但现在我面临一个新情况,即我想在特定的地方,比如当我点击图片而不是那个图片地方的菜单弹出窗口时。
我该怎么做?
以下代码将帮助您在动态位置打开弹出窗口:
public void showMenuPopUp(final View view, final Context mCtx ) {
LayoutInflater layoutInflater = (LayoutInflater) mCtx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.menu_popup, null);
popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, true);
popupWindow.setFocusable(true);
popupWindow.update();
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setOutsideTouchable(true);
popupWindow.setTouchInterceptor(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
popupWindow.dismiss();
return true;
}
return false;
}
});
Button btn1= (Button) popupView.findViewById(R.id.btn1);
Button (new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// button click event
popupWindow.dismiss();
}
});
popupWindow.showAsDropDown(view, 0, 0);
}
其中 view 是您必须打开弹出窗口的视图
要在图像上打开此弹出窗口,请点击像这样在您的图像上写入 onClickLsitener:
ImageView img = (ImageView) findViewById(R.id.myImageId);
img.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// your code here
showMenuPopUp(v,Activity.this);
}
});
我回答过类似的问题 here ,我在那个例子中使用了 PopUpWindow ,你也可以使用 DialogFragment 但稍微最小选项,都支持自定义布局,看起来像菜单。您可以对您在屏幕中单击的按钮或操作栏按钮执行类似的选项
您有两个选项,二是使用弹出窗口执行此操作,单击一个按钮,您可以执行 1)showAsDropDown(findViewbyId(R.id.menuitem),0,0)
弹出窗口,这很好,因为它看起来像是从您单击的按钮弹出的,或者
2)showAtLocation()
像 X 和 Y 这样的重力 属性 位置,你可以提及您希望菜单出现在屏幕上的哪个位置