0

カスタム アダプターを備えた GridView があり、リストから項目を選択すると、セレクターが 1 秒間表示されて消えます。カスタムアダプターが原因だと思い、それとセレクターで遊んでみましたが、役に立ちませんでした。

これが私のアダプターです (「Hello, Views」の Grid View サンプルに基づく):

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秒後に消えるオレンジ色の長方形が表示されます。

グリッド ビューのスクリーン キャプチャ

4

1 に答える 1

5

タッチモードでは選択されたものがないからです。こちらのドキュメントを参照してください。

これを回避するには、グリッド セル レイアウトをクリック可能に設定し、ここでandroid:clckickable="true"説明されているように 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 セル レイアウトの背景として設定します。これにより、目的の効果が得られるはずです。

于 2012-05-27T20:14:53.137 に答える