java - Android Recycler 视图禁用滚动条但不使用 setVerticalScrollBarEnabled
问题描述
我有一个视图寻呼机并有 3 个片段。这 3 个片段是回收者视图。
我想当我拖到下一页时,滚动条会消失。但我不想使用setVerticalScrollBarEnabled
. 因为当调用这个方法时,主要内容项会被放大。我认为原因是滚动条宽度是 4dp。因此,主要内容项将按比例放大。我不喜欢这种放大效应。
我也试过setVerticalScrollbarThumbDrawable
透明色。但是这个方法需要加上这个条件Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q
。
任何人都可以给我一些建议。非常感谢。
public void SetRecyclerViewScrollBar(boolean enable) {
if(this.mRecyclerView != null) {
this.mAdapter.notifyDataSetChanged();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
if(!enable) {
this.mRecyclerView.setVerticalScrollbarThumbDrawable(this.mContext.getDrawable(R.drawable.scrollbar_transparent));
this.mRecyclerView.setVerticalScrollbarTrackDrawable(this.mContext.getDrawable(R.drawable.vertical_scrollview_track_transparent));
} else {
this.mRecyclerView.setVerticalScrollbarThumbDrawable(this.mContext.getDrawable(R.drawable.scrollbar));
this.mRecyclerView.setVerticalScrollbarTrackDrawable(this.mContext.getDrawable(R.drawable.vertical_scrollview_track));
}
}
}
}
解决方案
使一些半透明的滚动拇指可绘制并添加:
android:scrollbarStyle="insideOverlay"
或 Java/Kotlin 方面:
scrollableView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
这将使您的拇指不会占用空间,并将被绘制在您的列表/内容的顶部。看看这张照片不同风格的表现。然后你可以使用setVerticalScrollBarEnabled
,你的内容空间(整个屏幕宽度)不会改变,也不会被重绘(因此放大)
推荐阅读
- python - PyQt5 closeEvent:如何正确使用它?
- python - requests.get 并解析对 json 的响应
- css - 如何隐藏 Material stepper 的 mat-step 之一而不将其从 DOM 中删除?
- node.js - STOMP - Activemq 客户端有什么方法可以在需要之前停止使用消息?
- ios - 使用 Swift 5.2.4 编译的模块不能被 Swift 5.1.2 编译器导入
- python - 将前一个时间步长的 LSTM 层的输出馈送到当前时间步长的密集层的输入(Keras,Tensorflow)
- powershell - 如何在 Azure DevOps PowerShell Pipeline 任务中添加带下划线的参数值
- sql - 如何根据日期范围使用预测键 YearMonth 制作表格
- python-3.x - 尝试从同一个下拉菜单中下载多个文件 - Python Selenium Chromedriver
- powershell - 从 PowerShell 中的列表中选择一个项目