基本上,我想实现一个 GridView
,其中的项目本身是可点击的,但在 GridView
中是可点击的 Button
和 复选框
es.
这是一个示例布局:
Gridview
-----------------------------------------
|[ImageView] |[ImageView] |
|[TextView] |[TextView] |
|[Button][Checkbox] |[Button][Checkbox] |
-----------------------------------------
|[ImageView] |[ImageView] |
|[TextView] |[TextView] |
|[Button][Checkbox] |[Button][Checkbox] |
-----------------------------------------
基本上,我想要做的是,当用户单击 CheckBox
时,现在可以从 GridView
中选择多个项目。当用户单击 Button
时,将显示一个 Popup
。当用户单击其他任何地方时,将启动一个新的 Activity
。这样做的重点不是长按以显示上下文菜单,我想要一个按钮来代替它。
关于如何处理这种情况有什么建议吗?在我当前的设置中,如果我在适配器的 GetView()
方法中添加 Button
,则只有 Button
是可点击的。整个 GridView
项目不可点击。当我删除 Button
时,GridView
项目再次可点击。似乎只有整个 GridView
项或 Button
是可点击的(响应 OnClickListener()
。有没有办法让它们都可点击?
最佳答案
这篇文章很旧,但仅供引用/googlers,我有以下解决方案:
你只需要在 imageAdapter 的 getView 中编写按钮、复选框的所有事件。 然后在 gridview 标签下的 layout.xml 文件中添加以下行:
android:clickable="true"
android:descendantFocusability="beforeDescendants"
并将这些行添加到您的按钮和复选框:
android:focusable="false"
android:focusableInTouchMode="false"
如果您希望在单击/触摸 gridview 项目的任何其他区域时启动其他 Activity ,则需要使用(标准代码)/(您自己的匹配实现):
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show();
}
干杯, });
关于Android:具有可点击网格项和嵌套 View (按钮、复选框)的 GridView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7386340/