基本上,我希望实现一个GridView
,其中项目本身是可点击的,但GridView
内可点击Button
和Checkbox
es。
这是一个示例布局:
Gridview
-----------------------------------------
|[ImageView] |[ImageView] |
|[TextView] |[TextView] |
|[Button][Checkbox] |[Button][Checkbox] |
-----------------------------------------
|[ImageView] |[ImageView] |
|[TextView] |[TextView] |
|[Button][Checkbox] |[Button][Checkbox] |
-----------------------------------------
基本上,我想要做的是,当用户点击CheckBox
时,现在可以从GridView
中选择多个项目。当用户点击Button
时,会显示A Popup
。当用户点击其他任何位置时,系统会启动新的Activity
。这一点的重点不是长按以显示上下文菜单,我想要一个按钮取代它。
有关如何处理此方案的任何建议?在我当前的设置中,如果我在适配器的Button
方法中添加GetView()
,则只能点击Button
。整个GridView
项目无法点击。当我删除Button
时,GridView
项再次可以点击。它似乎只有整个GridView
项或Button
可点击(响应OnClickListener()
。有没有办法让它们都可点击?
答案 0 :(得分:12)
这篇文章很老,但仅供参考/ googlers,我有以下解决方案:
您只需要为imageAdapter的getView中的按钮,复选框写入所有事件。 然后在gridview标记下的layout.xml文件中添加以下行:
android:clickable="true"
android:descendantFocusability="beforeDescendants"
并将这些行添加到按钮和复选框:
android:focusable="false"
android:focusableInTouchMode="false"
如果您想要点击/触摸gridview项目的任何其他区域,则需要启动其他活动,您需要使用(标准代码)/(您自己的匹配实现):
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();
}
干杯, });
答案 1 :(得分:1)
您可以创建项 xml并将其用作gridView项。然后使用适配器初始化gridView中的按钮和复选框。在您可以将clickListener添加到gridView项目之后,但是添加到 item xml中的布局之后,它的子视图将不会响应click事件。