Android 无法在PopupWindow中为GridView执行OnItemClick
我有一个显示在弹出窗口中的gridView(gridView位于一个透明布局中,该布局继承自linearlayout,只是有一个部分透明的背景)。我永远无法执行此GridView的OnItemClick。当我在gridview中触摸一个图像时,它似乎被单击(图像bachgrond发生变化),但OnItemClick没有被调用 下面是我的适配器和包含gridView的popupview的代码。谢谢Android 无法在PopupWindow中为GridView执行OnItemClick,android,irc,Android,Irc,我有一个显示在弹出窗口中的gridView(gridView位于一个透明布局中,该布局继承自linearlayout,只是有一个部分透明的背景)。我永远无法执行此GridView的OnItemClick。当我在gridview中触摸一个图像时,它似乎被单击(图像bachgrond发生变化),但OnItemClick没有被调用 下面是我的适配器和包含gridView的popupview的代码。谢谢 //Adapter 公共类ImageAdapter扩展了BaseAdapter{ 私有上下文; 私
//Adapter
公共类ImageAdapter扩展了BaseAdapter{
私有上下文;
私人背景
public ImageAdapter(Context c) {
mContext = c;
//---setting the style---
TypedArray a = c.obtainStyledAttributes(R.styleable.Gallery1);
itemBackground = a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0);
a.recycle();
}
}
//在活动中,onCreate////////
...
最终LayoutFlater充气器=(LayoutFlater)this.getSystemService(Context.LAYOUT\u充气器\u服务);
final TransparentLayout musicGrid=(TransparentLayout)充气器。充气(R.layout.gridviewpopup,null,false);
final GridView gView=(GridView)musicGrid.findView(R.id.music\u GridView);
gView.setAdapter(新的ImageAdapter(this));
最终PopupWindow SoundSelector窗口=新的PopupWindow(此);
soundSelectorWindow.setContentView(musicGrid);
soundSelectorWindow.setTouchable(真);
gView.setOnItemClickListener(新的OnItemClickListener()
{
public void onItemClick(AdapterView父视图、视图v、整型位置、长id)
{
//永远不会到这里
soundSelectorWindow.Disclose();
}
});
如果删除声音选择器或窗口,会发生什么情况。可设置触摸(true)代码>我无法解释为什么OnItemClickListener不工作,但当我用OnTouchListener替换它时,它工作了。您是否需要区分单击了哪个项目,或者仅仅知道单击了弹出窗口就足够了?从您的代码来看,它与后者类似,因此OnTouch应该可以工作:
popup.setTouchable(true);
popup.setFocusable(true);
gView.setClickable(true);
gView.setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
popup.dismiss();
return true;
}
});
检查模拟器的虚拟机大小,使其足以在其虚拟机中运行您的应用程序。
检查
的大小。保持最小大小,以便Emulator在执行应用程序时不会发现任何困难。我制作了一个非常简单的应用程序来演示此行为,以防有人想看一下:虽然示例的设计很奇怪,但毕竟是示例。您不需要设置为可触摸-默认情况下是这样的。但是,您确实需要设置popup.setFocusable(true);非常感谢你,亚历克斯!这就成功了。我仍然不确定为什么我能够在没有popupwindow可调焦选项的情况下滚动我的gridView,但不能进行选择。是的,这也行。不幸的是,我需要知道点击了哪个项目。谢谢你看!
//////////In Activity, onCreate////////
...
final LayoutInflater inflater=(LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final TransparentLayout musicGrid = (TransparentLayout) inflater.inflate(R.layout.gridviewpopup, null, false);
final GridView gView = (GridView) musicGrid.findViewById(R.id.music_gridview);
gView.setAdapter(new ImageAdapter(this));
final PopupWindow soundSelectorWindow = new PopupWindow(this);
soundSelectorWindow.setContentView(musicGrid);
soundSelectorWindow.setTouchable(true);
gView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
//NEVER GETS HERE
soundSelectorWindow.dismiss();
}
});
popup.setTouchable(true);
popup.setFocusable(true);
gView.setClickable(true);
gView.setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
popup.dismiss();
return true;
}
});