当前位置: 首页 > 知识库问答 >
问题:

列表/GridView中的选择器未显示

曾典
2023-03-14

我有一个带有自定义适配器的 GridView,当我从列表中选择一个项目时,选择器会显示一秒钟并消失。我猜自定义适配器会导致它,我尝试使用它和选择器,但无济于事。

下面是我的适配器(基于“Hello,Views”中的网格视图示例):

package shira.android.paintdroid;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.ImageView;

class PaintActionsAdapter extends BaseAdapter
{
private Context context;
private int[] actionsImagesResources;

public PaintActionsAdapter(Context context)
{
    if (context==null)
        throw new IllegalArgumentException("The context must be non-null!");
    this.context=context;
    /*actionsImagesResources=context.getResources().getIntArray(R.array.
            actions_images);*/
    actionsImagesResources=new int[6];
    for (int counter=0;counter<actionsImagesResources.length;counter++)
        actionsImagesResources[counter]=R.drawable.pencil;
}

public int getCount() { return actionsImagesResources.length; }

public long getItemId(int position)
{ return actionsImagesResources[position]; }

public Object getItem(int position) 
{ return actionsImagesResources[position]; }

public View getView(int position,View convertView,ViewGroup parent)
{
    ImageView actionImageView;
    if (convertView==null)
    {
        actionImageView=new ImageView(context);
        AbsListView.LayoutParams layoutParams=new AbsListView.LayoutParams(
                ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.
                FILL_PARENT);
        actionImageView.setLayoutParams(layoutParams);
        //actionImageView.setAlpha(0);
    }
    else actionImageView=(ImageView)convertView;
    actionImageView.setImageResource(actionsImagesResources[position]);
    return actionImageView;
}
}

布局是这样的:

<GridView android:id="@+id/paint_actions_grid" android:layout_width="0dip"
        android:layout_height="fill_parent" android:numColumns="2" 
        android:layout_weight="0.15" android:drawSelectorOnTop="true"/> <!-- android:background="@color/ui_background_color"/> --> 
        <!-- android:listSelector="@drawable/actions_list_selector"/> -->

谢谢你的帮助。

下面是GridView的一个截图(现在,所有的条目都有相同的图片)。我想在选中的图像周围画一个某种颜色的框,但是我得到一个橙色的矩形,一秒钟后就消失了,就像我说的。

共有1个答案

岳硕
2023-03-14

这是因为在触摸模式中没有选择这样的东西。请参阅此处的文档。

您可以通过将网格单元布局设置为可点击android:clckickable=“true”,然后创建ColorStateList来解决这个问题。

您要为此使用的状态是激活的。在选择器xml中使用该状态。

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
   <item android:state_activated="true" android:color="@color/your_activated_color" />  
    <item android:color="@color/your_standard_color"/> 
</selector>

然后将选择器xml设置为gridview单元格布局的背景。这应该可以达到预期的效果。

 类似资料:
  • 我在我的应用程序中使用StaggeredGridView和我创建的自定义选择器,但我的选择器肯定出了很大的问题,因为当我在网格视图中选择一个项目时,所有项目都将其颜色更改为绿色。 下面是网格视图项的代码: 这是我的选择器: 这是我的适配器类: 在我的片段中: 知道为什么它可能是错的吗?

  • 我有一个用来选择某些元素的代码,当你点击geticon按钮并显示正确的选项值时,该代码工作得很好。问题是我不确定如何显示下拉菜单的选择选项值(而不是按钮)。 这是我的Jsfiddle null null

  • 我想在选择另一个select元素的一个选项时显示一个select元素,在选择另一个选项时隐藏它。 这是JavaScript: 感谢任何帮助。谢谢

  • 我想在长按时绘制选择器,如图所示。当我长按一个项目时,CAB菜单被激活。但是单击后列表选择器指示器会关闭一次。我希望列表选择器处于活动状态,直到CAB菜单处于活动状态,允许多次选择。如果我双击,颜色应该会切换。当我单击它时,此代码就像闪烁一样工作。有谁面临类似的问题吗?有没有办法实现此功能? 具有多项选择的网格视图: GridView在我的OnCreate中设置选择: 这工作正常: 我试图在激活C

  • 本文向大家介绍从MySQL表的列中选择并仅显示一些行,包括了从MySQL表的列中选择并仅显示一些行的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是用于选择和仅显示一些行的查询- 这将产生以下输出-

  • 我有一个Windows Phone应用程序,其中一个ListPicker绑定到一个ObservableCollection和一个选定的项目: 在ViewModel中: 当我试图从按钮处理程序的列表中删除所选项目时,我得到一个InvalidOperationException(SelectedItem必须始终设置为有效值): 我希望将SseltedCon条件设置为null(这实际上是列表中的第一个项