带有GridView的Android drawSelectorOnTop

带有GridView的Android drawSelectorOnTop,第1张

带有GridView的Android drawSelectorOnTop

我想你错了

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5032892.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存