Android drawSelectorOnTop mit GridView
Ich entwickle eine Anwendung mit Registerkarten, in der eines der Fragmente, CollectionsFragment, eine GridView mit einer ImageView in jedem Slot enthält. Ich möchte einen Selektor verwenden, um Benutzern Feedback zu geben, wenn der Benutzer auf eines der Bilder klickt.
Ich habe den Selektor erfolgreich implementiert, mein Problem ist jedoch, dass der Selektor nur im Hintergrund des Bildes zeichnet, aber ich möchte, dass der Selektor über das gesamte Bild zeichnet. Ich habe dieses Problem an anderer Stelle erwähnt gesehen, aber die von vielen ausgewählte Lösung, die die drawSelectorOnTop-Eigenschaft von GridView festlegt, funktioniert bei mir nicht.
Das relevante Fragment mit dem relevanten Adaptercode:
public class CollectionsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_collections, container, false);
// Grid view is inside the xml view inflated above
GridView gridView = (GridView)view.findViewById(R.id.gridview);
gridView.setDrawSelectorOnTop(true);
((GridView) gridView).setAdapter(new CustomGridViewAdapter(getActivity()));
return view;
}
private class CustomGridViewAdapter extends BaseAdapter {
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View v = view;
ImageView picture;
TextView name;
if(v == null) {
v = inflater.inflate(R.layout.collections_item, viewGroup, false);
v.setTag(R.id.picture, v.findViewById(R.id.picture));
v.setTag(R.id.text, v.findViewById(R.id.text));
}
picture = (ImageView)v.getTag(R.id.picture);
name = (TextView)v.getTag(R.id.text);
Item item = (Item)getItem(i);
name.setText(item.name);
picture.setImageResource(item.drawableId);
picture.setBackgroundResource(R.drawable.selector);
return v;
}
}
}
Und meine Auswahl der Vollständigkeit halber:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@color/buttonhighlight"/> <!-- pressed state -->
<item android:state_focused="true"
android:drawable="@color/buttonhighlight"/> <!-- focused state -->
<item android:drawable="@android:color/transparent"/> <!-- default state -->
</selector>
Danke für jede Hilfe,