Android drawSelectorOnTop z GridView
Zajmuję się tworzeniem aplikacji z kartami, w której jeden z fragmentów, CollectionsFragment, zawiera GridView z ImageView w każdym gnieździe. Chciałbym, aby za pomocą selektora przekazywać użytkownikom informacje zwrotne, gdy użytkownik kliknie jeden z obrazów.
Z powodzeniem zaimplementowałem selektor, jednak moim problemem jest to, że selektor rysuje tylko w tle obrazu, ale chciałbym, aby selektor narysował cały obraz. Widziałem ten problem przywoływany gdzie indziej, jednak rozwiązanie wybrane przez wielu, ustawiające właściwość drawSelectorOnTop GridView, nie działa dla mnie.
Odpowiedni fragment z odpowiednim kodem adaptera:
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;
}
}
}
I mój selektor ze względu na kompletność:
<?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>
Dziękuję za pomoc