0x01 问题来源

由于项目需要,需要在Java代码中创建 RecyclerView, 发现给其设置了滚动条就是不显示.设置代码如下:

mEmojiRv.setVerticalScrollBarEnabled(true);
mEmojiRv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);

0x02 问题修复

Google一下,找到了解决办法,参考如下:

android - Is there any way to enable scrollbars for RecyclerView in code? - Stack Overflow

大概的含义是:

Java代码动态创建 RecyclerView 没有调用View的方法:

View.initializeScrollbarsInternal(TypedArray a) 
View.initializeScrollbars(TypedArray a)

所以,解决方案是把 RecyclerView单独放在一个布局里面,然后加载.

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:scrollbars="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

加载布局:

mEmojiRv = (RecyclerView) LayoutInflater.from(getContext()).inflate(
    R.layout.layout_recycler_view, mRootLayout, false);

经测试,上述方案可行.解决了不显示滚动条的问题.