前言:

最近一直在做TV开发,有个需求是Webview需要显示滚动条,并且获得焦点时显示一种自定义颜色的滚动条,失去焦点时隐藏滚动条,于是研究了一番,用自定义的方式实现了。

1.代码如下:

private fun initView() {
webView!!.apply {
webView!!.settings.apply {
javaScriptEnabled = true
domStorageEnabled = true
useWideViewPort = false
loadWithOverviewMode = true
setSupportZoom(false)
builtInZoomControls = false
allowFileAccess = true
defaultTextEncodingName = “UTF-8”
}
}
webView.loadDataWithBaseURL(null, getString(R.string.content), “text/html”, “utf-8”, null)
}

2.实现获取焦点显示与隐藏代码如下:


private fun initListener() {
webView.onFocusChangeListener = View.OnFocusChangeListener { v, hasFocus ->
if (hasFocus) {
webView.isHorizontalScrollBarEnabled = false
webView.isVerticalScrollBarEnabled = true
} else {
webView.isHorizontalScrollBarEnabled = false
webView.isVerticalScrollBarEnabled = false
}
}
}

3.布局文件代码如下:

实现webview滚动条的属性如下:
android:fadeScrollbars=“false”//设置滚动条是否隐藏
android:focusable=“true”//获取焦点
android:scrollbarThumbVertical="@drawable/custom_scrollbar_focus"
android:scrollbarTrackVertical="@drawable/custom_scrollbar_normal"
android:scrollbars=“vertical”//焦点方向横向或者竖向

4.完整的布局代码如下:

<?xml version="1.0" encoding="utf-8"?>

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
xmlns:tools=“http://schemas.android.com/tools”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
tools:context=".MainActivity">

<TextViewandroid:id="@+id/tv_settlement_amount"android:layout_width="wrap_content"android:layout_height="wrap_content"android:ellipsize="end"android:gravity="center"android:text="结算金额"android:textColor="@color/white"android:textSize="24sp" /><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/cl_invoice"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/invoice_bg"android:padding="20dp"tools:ignore="MissingConstraints"><TextViewandroid:id="@+id/tv_invoice"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="开票信息"android:textColor="@color/black"android:textSize="@dimen/text_size_14"tools:ignore="MissingConstraints" /><TextViewandroid:id="@+id/tv_account_information"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="查看我的账户资料"android:textColor="#2E3BFF"android:textSize="@dimen/text_size_12"app:layout_constraintEnd_toEndOf="parent"tools:ignore="MissingConstraints" /><TextViewandroid:id="@+id/tv_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="@dimen/public_14dp"android:text="@string/company_name_string"android:textColor="@color/c666666"android:textSize="@dimen/text_size_14"app:layout_constraintTop_toBottomOf="@+id/tv_invoice"tools:ignore="MissingConstraints" /><TextViewandroid:id="@+id/tv_Identification_number"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="@dimen/public_13dp"android:text="@string/taxpayer_identification_number_string"android:textColor="@color/c666666"android:textSize="@dimen/text_size_14"app:layout_constraintTop_toBottomOf="@+id/tv_name"tools:ignore="MissingConstraints" /><TextViewandroid:id="@+id/tv_address"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="@dimen/public_12dp"android:ellipsize="end"android:maxLines="3"android:text="@string/company_address_string"android:textColor="@color/c666666"android:textSize="@dimen/text_size_14"app:layout_constraintTop_toBottomOf="@+id/tv_Identification_number"tools:ignore="MissingConstraints" /><TextViewandroid:id="@+id/tv_phone"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="@dimen/public_12dp"android:text="@string/work_phone_string"android:textColor="@color/c666666"android:textSize="@dimen/text_size_14"app:layout_constraintTop_toBottomOf="@+id/tv_address"tools:ignore="MissingConstraints" /><TextViewandroid:id="@+id/tv_bank"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="@dimen/public_13dp"android:text="@string/bank_string"android:textColor="@color/c666666"android:textSize="@dimen/text_size_14"app:layout_constraintTop_toBottomOf="@+id/tv_phone"tools:ignore="MissingConstraints" /><TextViewandroid:id="@+id/tv_account_number"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="@dimen/public_12dp"android:text="@string/bank_account_string"android:textColor="@color/c666666"android:textSize="@dimen/text_size_14"app:layout_constraintTop_toBottomOf="@+id/tv_bank"tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout><WebViewandroid:id="@+id/webView"android:layout_width="0dp"android:layout_height="0dp"android:fadeScrollbars="false"android:focusable="true"android:scrollbarThumbVertical="@drawable/custom_scrollbar_focus"android:scrollbarTrackVertical="@drawable/custom_scrollbar_normal"android:scrollbars="vertical"app:layout_constraintBottom_toTopOf="@+id/btn_confirm_settlement"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toBottomOf="@+id/cl_invoice" /><Buttonandroid:id="@+id/btn_confirm_settlement"style="?android:attr/borderlessButtonStyle"android:layout_width="match_parent"android:layout_height="@dimen/public_40dp"android:background="@drawable/btn_send_focus"android:focusable="true"android:text="@string/confirm_settlement"android:textColor="@color/color_45D57B"android:textSize="@dimen/text_size_16"android:layout_margin="20dp"app:layout_constraintBottom_toBottomOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

5.实现的效果如下:


6.可以看到当webview获取焦点时显示滚动条,失去焦点时隐藏滚动条,小伙伴们可以自己定义webview滚动条的颜色:

设置如下:

android:scrollbarThumbVertical="@drawable/custom_scrollbar_focus"
android:scrollbarTrackVertical="@drawable/custom_scrollbar_normal"
drawable文件如下:


7.小伙伴们可以自己去尝试,根据需求实现自己的颜色,在代码中设置webView的滚动条颜色失败,直接报错了,所以用这种方法.

AndroidTV开发10使用Kotlin自定义WebView滚动条颜色相关推荐

  1. android开发,使用kotlin学习WebView(详细)

    随着后台技术的不断发展,App前端的应用都布置了Web页面的界面,这个界面就是由WebView组件渲染出来的.WebView由如下优点:可以直接显示和渲染Web页面或者网页:可以直接调用网络上或者本地 ...

  2. HBuilderX 开发工具,主题自定义, 代码颜色自定义

    统一回复:百度网盘下载主题文件,替换即可 链接:https://pan.baidu.com/s/1QfR89snYdTcdYTf-0ERZyQ?pwd=kngl  提取码:kngl  --来自百度网盘 ...

  3. Kotlin 自定义View之实现标尺控件(选择身高、体重等)

    本篇文章讲的是Kotlin 自定义view之实现标尺控件Ruler,以选择身高.体重等.开发中,当我们需要获取用户的身高和体重等信息时,如果直接让他们输入,显然体验不够好.像类似于唯品会.好轻等APP ...

  4. AndroidTV开发13——实现TV端大图浏览

    AndroidTV开发13--实现TV端大图浏览 最近TV开发需要加载的图片很长,大小也很大,并且还不允许压缩.比如显示:世界地图.清明上河图.微博长图.海报.活动照片等. 那么对于这种需求,该如何做 ...

  5. AndroidTV开发14优雅地实现超长大图加载

    AndroidTV开发14优雅地实现超长大图加载 1.文章前言 之前在Android和Vue端都实现过长图加载,虽然实现需求,但是有很多问题没有解决,效果也不尽人意今天就各种问题来分析一下: 图片加载 ...

  6. android自定义progressbar样式,Android开发中如何实现自定义ProgressBar的样式

    Android开发中如何实现自定义ProgressBar的样式 发布时间:2020-11-20 16:08:10 来源:亿速云 阅读:294 作者:Leah Android开发中如何实现自定义Prog ...

  7. Android开发之WebView加载html数据去除Webview滚动条的方法

    老套路看图: 这是通过webview加载HTML源码显示的网页:加载方法如下: webview.loadDataWithBaseURL(null, htmlData, "text/html& ...

  8. Web开发技巧:使用自定义数据属性创建弹出窗口

    2019独角兽企业重金招聘Python工程师标准>>> 在开发web应用时,有时会用JavaScript获取文档之外的信息,某些情况下,我们需要用一些技巧来处理这些额外信息以保证We ...

  9. 微信小程序开发学习5(自定义组件)

    微信小程序开发学习5(自定义组件) 1.学习目标 能够知道如何自定义小程序组件 能够知道小程序组件中behaviors的作用 能够知道如何安装和配置vant-weapp组件库 能够知道如何使用MobX ...

最新文章

  1. 如何利用离散Hopfield神经网络进行高校科研能力评价(2)
  2. C# 8.0的三个令人兴奋的新特性
  3. db2和mysql性能_关于DB2数据库的性能分析记录
  4. UA OPTI512R 傅立叶光学导论22 透镜成像与傅立叶变换
  5. Problem H Rock Paper Scissors,FFT
  6. 前端学习(1863)vue之电商管理系统电商系统之绘制登录表单区域
  7. php server vscode,如何使用code-server打造自己的云端VSCode?
  8. phpstorm设置方法头信息备注
  9. 提升孩子的智力从用对方法做起
  10. Cisco 静态NAT、动态NAT配置
  11. c语言蜂鸣字符,蜂鸣器原理
  12. ZT世界第九大奇迹--北京西直门立交桥〔爆笑〕
  13. 烤仔看世界 | “女王”的骗局
  14. Markdown标记语言知识梳理
  15. 【活动】VUCA时代下的项目管理:京东技术+系列论坛
  16. LoRa及LoRaWAN简介
  17. 小程序跳转小程序,小程序跳转公众号,小程序跳转h5
  18. python人工智能要看哪些书籍_有趣的电影英文怎么读
  19. C++函数声明和函数定义
  20. Python文本挖掘笔记:1.3文本挖掘的基本思路

热门文章

  1. 主键索引和唯一索引的区别与创建规则
  2. 谈什么是卡片式设计?
  3. iOS-理解SSL证书
  4. Android6.0 移除电池设置
  5. mysql批量insert into_mysql批量插入数据
  6. java从入门到精通 李钟尉_手机APP移动开发论文设计.doc
  7. c#mvc过滤器之系统过滤器
  8. AppStore app信息url
  9. hadoop的find
  10. 最新网站推广方法 (交你怎样法帖骗流量)