如何在android中创建此类菜单并调用悬停操作?
如何在android中创建此类菜单并调用悬停操作?,android,popupmenu,mousehover,Android,Popupmenu,Mousehover,我想创建这样的自定义菜单。有人能帮我吗 这是我的java端实现。ivPricePopupMenu是ImageView对象,productlist_popup_菜单是我想在onMouseHover操作上显示的布局。提出一些解决方案 ivPricePopupMenu.setOnHoverListener(new View.OnHoverListener() { @Override public boolean onHover(View v, Motio
我想创建这样的自定义菜单。有人能帮我吗 这是我的java端实现。ivPricePopupMenu是ImageView对象,productlist_popup_菜单是我想在onMouseHover操作上显示的布局。提出一些解决方案
ivPricePopupMenu.setOnHoverListener(new View.OnHoverListener() {
@Override
public boolean onHover(View v, MotionEvent event) {
Log.d("hover", "Bring yor cursor over the button");
if(event.getAction()==MotionEvent.ACTION_HOVER_ENTER)
{
//instantiate the popup.xml layout file
LayoutInflater layoutInflater = (LayoutInflater) ProductListActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View customView = layoutInflater.inflate(R.layout.productlist_popup_menu,null);
//instantiate popup window
PopupWindow popupWindow = new PopupWindow(customView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//display the popup window
popupWindow.showAtLocation(linearLayout, Gravity.CENTER,0, 0);
}
return false;
}
});
悬停菜单或工具提示类视图可以使用
PopupWindow
小部件实现
弹出窗口(上下文)
为PopupWindow创建所需的XML布局文件。使用LayoutInflater
为布局充气,并设置所需数据
根据锚定视图在屏幕上的位置(即问题图像中的信息按钮视图)计算x和y坐标,以定位弹出窗口
使用showAtLocation
方法显示弹出窗口
popUpWindow.showAtLocation(anchorView, gravity, x, y)
重力可以设置为重力。通过正确计算x和y坐标,没有重力。我得到了解决方案!!!为popupWindow创建单独的布局文件,然后使用onClickListner事件调用该窗口。在按钮或图像onClick事件中创建此方法 私有void initiatePopupWindow(){ //实例化popup.xml布局文件 LayoutInflater LayoutInflater=(LayoutInflater)ProductListActivity.this.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE); View customView=LayoutFlater.充气(R.layout.productlist\u弹出菜单,空)
进一步解释,exceptionon方法调用ivPricePopupMenu.setOnHoverListener(new View.OnHoverListener(){}在这一行中,我得到Exception它给出了这个错误-尝试调用虚拟方法'void android.widget.ImageView.setOnHoverListener(android.View.View$OnHoverListener)'在空对象引用上,使用onclick listener或touch listener
//instantiate popup window
final PopupWindow popupWindow = new PopupWindow(customView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setFocusable(true);
popupWindow.setTouchable(true);
popupWindow.setBackgroundDrawable(new ColorDrawable());
popupWindow.setOutsideTouchable(true);
//display the popup window
popupWindow.showAtLocation(buttonTestingLayout, Gravity.CENTER, 0, 0);
}