Android - 在运行时更改滚动条轨道可绘制并强制滚动条更新

发布于 2024-11-10 01:23:45 字数 642 浏览 5 评论 0原文

我使用 View 的 android:scrollbarTrackVertical 属性来更改垂直滚动条轨道的背景颜色:

android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track"

“scrollbar_vertical_track”可绘制对象定义为:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00FF00" />
</shape>

在运行时,我更改可绘制对象的颜色使用:

    GradientDrawable d = (GradientDrawable)(getResources().getDrawable(R.drawable.scrollbar_vertical_track));
    d.setColor(color);

如何强制视图(我使用的是 WebView)更新滚动条轨道的颜色?看来只有在我重新启动活动后才有效。我尝试了不同的方法(无效等 - 没有一个有效)。

I'm using the android:scrollbarTrackVertical attribute of a View to change the background color of the vertical scroll bar track:

android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track"

The "scrollbar_vertical_track" drawable is defined as:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00FF00" />
</shape>

At runtime, I change the color of the drawable using:

    GradientDrawable d = (GradientDrawable)(getResources().getDrawable(R.drawable.scrollbar_vertical_track));
    d.setColor(color);

How can I force the View (I'm using a WebView) to update the color of the scrollbar track? It seems it only works after I restart the activity. I've tried different methods (invalidate, etc. - none works).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦与时光遇 2024-11-17 01:23:45

检查函数 protected void initializeScrollbars(视图中的 TypedArray a)。我建议您尝试扩展 WebView 并向此函数公开一个包装器。这样你就可以任意调用它。可能值得检查这种方法。

Check the function protected void initializeScrollbars(TypedArray a) in View. I'd suggest that you try to extend WebView and expose a wrapper to this function. Thus you'll be able to arbitrary call it. Might be worth to check this approach.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文