android – 以编程方式更改ScrollView的颜色
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android – 以编程方式更改ScrollView的颜色,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1941字,纯文字阅读大概需要3分钟。
内容图文
我目前在做什么
目前,我已使用android:scrollbarThumbVertical属性更改了我的XML文件中的滚动条,如下所示:
<ScrollView
android:id="@+id/scrollView1"
android:scrollbarThumbVertical="@drawable/scrollbar_blue"
... >
而scrollbar_blue是指我的scrollbar_blue.xml文件,它是这样的:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<gradient
android:angle="45"
android:centerColor="@color/blue"
android:endColor="@color/blue"
android:startColor="@color/blue" />
<corners android:radius="8dp" />
</shape>
我想做的事
我的应用程序有一个颜色选项 – 所以当颜色打开时,它应该保持蓝色;否则,它应该是灰色的.
我如何以编程方式(在我的活动类中)更改我的ScrollView以使用我的scrollbar_grey.xml?
如果你看一下ScrollView的Android文档,android没有相应的方法:scrollbarThumbVertical
我很好用另一种改变颜色的方式.
以下是我创建ScrollView引用的方法:
ScrollView scr = (ScrollView)findViewById(R.id.scrollView1);
解决方法:
有一种方法可以通过编程方式进行更改,但该方法不会公开.似乎没有任何其他东西可以从我读过的内容中以编程方式进行更改.
但是,我确实遇到过一个使用反射来执行此操作的stackoverflow应答.
如果适用于你,请在那里提出答案:https://stackoverflow.com/a/19819843/3286163
答案是列表视图,但滚动视图是相同的:
ScrollView scr = (ScrollView)findViewById(R.id.scrollView1);
try
{
Field mScrollCacheField = View.class.getDeclaredField("mScrollCache");
mScrollCacheField.setAccessible(true);
Object mScrollCache = mScrollCacheField.get(scr); // scr is your Scroll View
Field scrollBarField = mScrollCache.getClass().getDeclaredField("scrollBar");
scrollBarField.setAccessible(true);
Object scrollBar = scrollBarField.get(mScrollCache);
Method method = scrollBar.getClass().getDeclaredMethod("setVerticalThumbDrawable", Drawable.class);
method.setAccessible(true);
// Set your drawable here.
method.invoke(scrollBar, getResources().getDrawable(R.drawable.scrollbar_blue));
}
catch(Exception e)
{
e.printStackTrace();
}
只有我能找到的东西.我自己尝试了一下,它有效.
内容总结
以上是互联网集市为您收集整理的android – 以编程方式更改ScrollView的颜色全部内容,希望文章能够帮你解决android – 以编程方式更改ScrollView的颜色所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。