今天在做小应用的时候,发现了一个棘手的问题,我想要去设置XRefreshView下拉刷新头的背景色为透明色,问了Qoder之后,他给我的建议如下:
1.new 一个新的头
2.设置该对象的背景色为透明色
// 创建标准的XRefreshViewHeader XRefreshViewHeader header = new XRefreshViewHeader(getContext()); header.setBackgroundColor(android.graphics.Color.TRANSPARENT);但是始终不生效,接下来我就不断咨询Qoder,但是每次的回答都是围绕着直接给header 设置背景去解决的。甚至他建议我定义一个背景色为透明色的View,然后直接设置给header,实在是让我哭笑不得。
最后,经过我的思考,既然XRefreshViewHeader 可以拿到,我就去这个自定义控件里面看了下代码,他是通过一个布局文件制作的自定义控件。
所以我就想,既然官方没有提供对应的API。这个布局能不能通过getChild去获取,然后手动设置背景色。经过断点,可以看到确实能够找到这个布局,如下图所示。
既然思路有了,接下来就是代码编写了,最终的代码如下所示:
// 创建标准的XRefreshViewHeader XRefreshViewHeader header = new XRefreshViewHeader(getContext()); header.getChildAt(0).setBackgroundColor(android.graphics.Color.TRANSPARENT);并且,为了方便其他人通过Qoder解决类似的问题,我还将方法告诉了Qoder: