2013-10-03 32 views
1

我正在使用ListViews和GridView在我的应用程序中。我为GridView使用了一个自定义适配器,但不是列表。更改元素的颜色OnItemClick在GridView中

enter image description here

正如你所看到的,自动改变元素的背景,当我点击它。但在GridView中并不是这样。我有手动吗?我想为用户提供一些反馈,典型的边界或类似的东西。我也上传了gridview截图。

enter image description here

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; 
} 

回答

2

尝试使用在你的GridView grid.setDrawSelectorOnTop(true);,当前的选择,也许是正在从适配器的不透明看法绘制。

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> 
1

将此行添加到您的GridView XML中。

android:listSelector="#00343434" 
0

我已经在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" >