【问题标题】:Selector in a List/GridView not displayed未显示列表/网格视图中的选择器
【发布时间】:2012-05-28 04:14:53
【问题描述】:

我有一个带有自定义适配器的 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 现在的样子的图像捕获(目前,所有项目都具有相同的图像)。我希望在所选图像周围绘制某种颜色的框架,但正如我所说,我得到一个橙色矩形,该矩形在一秒钟后消失。

【问题讨论】:

  • 你能发布它现在的样子吗?也许你想让它看起来像什么?

标签: android android-gridview


【解决方案1】:

这是因为在触摸模式下没有选择的东西。请参阅文档here

您可以通过将网格单元布局设置为可点击的android:clckickable="true" 来解决此问题,然后按照here 的描述创建一个 ColorStateList。

您要为此使用的状态是activated。在选择器 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 单元格布局的背景。这样应该可以达到预期的效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 2011-07-13
    相关资源
    最近更新 更多