Android:具有可点击网格项和嵌套 View (按钮、复选框)的 GridView

标签 android gridview

基本上,我想实现一个 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/

相关文章:

android - 使用共享首选项来记住单击后隐藏的 TextView

Android 如何在三星标签 2 中以编程方式禁用预测文本

Flutter找不到Android SDK

android - Android Wear 5.0.X 上的随机应用程序崩溃

android - 反射可以与属于大于最小 sdk 的方法一起使用吗?

sql - VB.Net 使用GridView绑定(bind)字段计算值并将值输出到另一个字段

android - 线性布局内带有 gridview 的 ListView 适配器在彼此下方而不是两列中显示项目

c# - ASP.NET 设置 GridView 中 DataBound 列的宽度

asp.net - 创建动态数量的 GridView

javascript - 带有复选框的 Gridview