栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有GridView的Android drawSelectorOnTop

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414112.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号