Android 如何正确获取GridView项目位置x,y
我想把对话框的位置设置在它被点击的相同位置,就像这样 但我明白了 这是我的“定位代码”对话框Android 如何正确获取GridView项目位置x,y,android,gridview,position,Android,Gridview,Position,我想把对话框的位置设置在它被点击的相同位置,就像这样 但我明白了 这是我的“定位代码”对话框 public void onItemClick(AdapterView<?> parent, View v, int position, long id) { float positionX = v.getX(); float positionY = v.getY(); LinearLayout container = (Line
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
float positionX = v.getX();
float positionY = v.getY();
LinearLayout container = (LinearLayout) gvGrid.getFocusedChild();
dialog = new Dialog(CW_Emergency.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.view_pager_layout);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
//position of popup
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.x = (int) positionX;
params.y = (int) positionY;
ViewPagerAdapter adapter = new ViewPagerAdapter(container, CW_Emergency.this);
viewPager = (ViewPager) dialog.findViewById(R.id.view_pager);
dialog.show();
}
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
浮动位置x=v.getX();
浮动位置y=v.getY();
LinearLayout容器=(LinearLayout)gvGrid.getFocusedChild();
dialog=新对话框(CW\U紧急情况。此);
对话框.requestWindowFeature(窗口.FEATURE\u无\u标题);
setContentView(R.layout.view\u pager\u layout);
dialog.getWindow().setBackgroundDrawable(新的ColorDrawable(android.graphics.Color.TRANSPARENT));
//弹出窗口的位置
WindowManager.LayoutParams params=dialog.getWindow().getAttributes();
参数x=(int)位置x;
参数y=(int)位置y;
ViewPagerAdapter适配器=新的ViewPagerAdapter(容器,CW_紧急情况。此);
viewPager=(viewPager)dialog.findViewById(R.id.view\u pager);
dialog.show();
}
请告诉我如何为所有屏幕大小正确定位它您可以使用PopupWindow
mPopupWindow = new PopupWindow(
customView,
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT
);
并展示它
mPopupWindow.showAsDropDown(ItemInGridView, 0, -1 * ItemInGridView.getHeight(), Gravity.LEFT);
据我所知,在正确的位置显示对话框将更加方便和简单。要实现弹出菜单
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_option1"
android:title="Option 1"
/>
<item android:id="@+id/menu_option2"
android:title="Option 2"
/>
</menu>
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
PopupMenu popup = new PopupMenu(this, v);
// Inflate the menu from xml
popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
// Setup menu item selection
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_option1:
Toast.makeText(MainActivity.this, "Option 1", Toast.LENGTH_SHORT).show();
return true;
case R.id.menu_option2:
Toast.makeText(MainActivity.this, "Option 2", Toast.LENGTH_SHORT).show();
return true;
default:
return false;
}
}
});
// Show the menu
popup.show();
}
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
PopupMenu popup=新的PopupMenu(此,v);
//从xml中展开菜单
充气(R.menu.popup\u菜单,popup.getMenu());
//设置菜单项选择
setOnMenuItemClickListener(新的PopupMenu.OnMenuItemClickListener(){
公共布尔onMenuItemClick(菜单项){
开关(item.getItemId()){
案例R.id.菜单选项1:
Toast.makeText(MainActivity.this,“选项1”,Toast.LENGTH_SHORT.show();
返回true;
案例R.id.菜单选项2:
Toast.makeText(MainActivity.this,“选项2”,Toast.LENGTH_SHORT.show();
返回true;
违约:
返回false;
}
}
});
//显示菜单
popup.show();
}
弹出菜单将显示在您要单击的视图附近。您尝试过没有设置对话框位置吗?是的。。它出现在屏幕中央