我想你错了
setDrawSelectoronTop(boolean)。该
selector正被引用在这里绘制是GridView的内部
selector绘制。
即使在最简单的实现中
GridView,当单击网格项时,也会在其周围绘制蓝色边框。这是因为,默认情况下,gridview自己的选择器会绘制
behind该项目。如果调用
setDrawSelectoronTop(true),则选择器(蓝色)将绘制在该项目上方。
但是
setDrawSelectoronTop(boolean)与您在适配器中设置的选择器无关。无论您通过
true或
false,ImageView的选择器的行为都不会改变。
解:
不用在适配器内部的每个ImageView上设置选择器,而是使GridView使用可绘制的选择器:
GridView gridView = (GridView)view.findViewById(R.id.gridview);gridView.setDrawSelectoronTop(true);// Make GridView use your custom selector drawablegridView.setSelector(getResources().getDrawable(R.drawable.selector));
现在,不需要:
picture.setBackgroundResource(R.drawable.selector);
编辑:
尽管我不建议这样做(明显的开销),但它应该可以工作:
@Overridepublic View getView(int i, View view, ViewGroup viewGroup) { View v = view; ImageView picture; .... .... LayerDrawable ld = new LayerDrawable(new Drawable[] // Drawable from item { getResources().getDrawable(item.drawableId), // Selector getResources().getDrawable(R.drawable.selector)}); // Set the LayerDrawable picture.setImageDrawable(ld); // Don't need this // picture.setBackgroundResource(R.drawable.selector); return v;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)