1

アプリで ListViews と GridView を使用しています。GridView にはカスタム アダプターを使用しましたが、リストには使用しませんでした。

ここに画像の説明を入力

ご覧のとおり、要素をクリックすると、要素の背景が自動的に変更されます。しかし、GridView では同じことが起こっていません。手動で行う必要がありますか?典型的な境界線など、ユーザーへのフィードバックをお願いします。グリッドビューのスクリーンショットもアップロードします。

ここに画像の説明を入力

GridView XML。

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="100dp"
android:drawSelectorOnTop="true"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" >

そして今、GridView アダプターの getView() 部分:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View layout=convertView;
    ViewHolder holder = null;
    GridCrop gridElement;

    if (layout == null) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        layout=inflater.inflate(R.layout.crop_grid_element,null);
        holder = new ViewHolder();
        holder.image = (ImageView) layout.findViewById(R.id.cropImage);
        holder.text = (TextView) layout.findViewById(R.id.imageTitle);
        layout.setTag(holder);
    } else {
        holder = (ViewHolder) layout.getTag();
    }

    gridElement=list.get(position);
    holder.image.setImageResource(gridElement.getImage());
    holder.text.setText(gridElement.getTitle());
    return layout;
}

class ViewHolder {
    ImageView image;
    TextView text;
}
4

4 に答える 4

2

GridView で使用grid.setDrawSelectorOnTop(true);してみてください。現在のセレクターは、アダプターからの非透過ビューの下に描画されている可能性があります。

于 2013-10-03T13:05:49.787 に答える
1

この行をGridView XMLに追加します。

android:listSelector="#00343434"
于 2013-10-03T13:03:10.963 に答える
0

実際、セルのメイン レイアウトのバックグラウンドでセレクターを直接使用する必要があります。

例 :

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/clr_main_green_pressed" android:state_selected="true" android:state_window_focused="false"/>
    <item android:drawable="@color/clr_main_green_pressed" android:state_selected="true"/>
    <item android:drawable="@color/clr_main_green_pressed" android:state_pressed="true" android:state_selected="false"/>
    <item android:drawable="@android:color/transparent" android:state_selected="false"/>

</selector>
于 2013-10-03T13:02:56.763 に答える
0

ここで、stackoverflow で XML の listSelector 属性を読みました...試してみましたが、うまくいきませんでした...別の色で試すまでは。したがって、答えは xml で GridView に追加することです。

android:listSelector="@color/Aqua" など。

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="100dp"
android:drawSelectorOnTop="true"
android:gravity="center"
android:horizontalSpacing="10dp"
android:listSelector="@color/Aqua"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" >

于 2013-10-03T13:03:22.560 に答える