Android:具有可点击网格项和嵌套视图的网格视图(按钮,复选框)

Nei*_*ers 4 android gridview

基本上,我想实现一个GridView项目本身是可点击的,但在GridView可点击的Buttons和Checkboxes内.

这是一个示例布局:

Gridview
-----------------------------------------
|[ImageView]        |[ImageView]        |
|[TextView]         |[TextView]         |
|[Button][Checkbox] |[Button][Checkbox] |
-----------------------------------------
|[ImageView]        |[ImageView]        |
|[TextView]         |[TextView]         |
|[Button][Checkbox] |[Button][Checkbox] |
-----------------------------------------
Run Code Online (Sandbox Code Playgroud)

基本上,我想要做的是,当用户点击时CheckBox,现在可以从中选择多个项目GridView.当用户点击时Button,Popup会显示A. 当用户点击其他任何地方时,将Activity启动新的.这一点的重点不是长按以显示上下文菜单,我想要一个按钮取代它的位置.

关于如何处理这种情况的任何建议?在我当前的设置中,如果我Button在适配器的GetView()方法中添加,只有Button可点击.整个GridView项目无法点击.当我删除时Button,该GridView项目可以再次点击.它似乎只是整个GridView项目或Button可点击(响应OnClickListener().有没有办法让它们都可点击?

Ali*_*liR 12

这篇文章很老,但仅供参考/ googlers,我有以下解决方案:

您需要为imageAdapter的getView中的按钮,复选框写入所有事件.然后在gridview标签下的layout.xml文件中添加以下行:

android:clickable="true"
android:descendantFocusability="beforeDescendants"
Run Code Online (Sandbox Code Playgroud)

并将这些行添加到您的按钮和复选框:

android:focusable="false"
android:focusableInTouchMode="false"
Run Code Online (Sandbox Code Playgroud)

如果您想要点击/触摸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();
        }
Run Code Online (Sandbox Code Playgroud)

干杯,});