Kev*_*Liu 94 android scrollbars android-recyclerview
正如我们所看到的,RecyclerView比ListView更有效,所以我更喜欢在我的项目中使用它.但是最近我把它放在我的自定义ViewGroup中时遇到了麻烦.RecyclerView很容易在xml中设置滚动条,如下所示:
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
但我真的找不到任何方法在RecyclerView的代码中设置滚动条,我试过的是:
mRecyclerView.setVerticalScrollBarEnabled(true);
Run Code Online (Sandbox Code Playgroud)
然后我在Android的文档中看到了这一点.
所以我试着制作自己的LayoutManager并覆盖我认为需要的功能.但最后我失败了.所以任何人都可以告诉我如何制作自己的LayoutManager或者只是向我展示其他解决方案.谢谢!
use*_*087 116
目前似乎无法以编程方式启用滚动条.这种行为的原因是Android不会调用View.initializeScrollbarsInternal(TypedArray a)或者View.initializeScrollbars(TypedArray a).只有在使用AttributeSet实例化RecyclerView时才会调用这两种方法.
作为一种解决方法,我建议您只使用RecyclerView创建一个新的布局文件:
vertical_recycler_view.xml
<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" />
Run Code Online (Sandbox Code Playgroud)
现在,您可以在任何地方使用滚动条来扩充和添加RecyclerView:
MyCustomViewGroup.java
public class MyCustomViewGroup extends FrameLayout
{
public MyCustomViewGroup(Context context)
{
super(context);
RecyclerView verticalRecyclerView = (RecyclerView) LayoutInflater.from(context).inflate(R.layout.vertical_recycler_view, null);
verticalRecyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false));
addView(verticalRecyclerView);
}
}
Run Code Online (Sandbox Code Playgroud)
Lil*_*ilo 64
在xml布局中设置垂直滚动条
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
Run Code Online (Sandbox Code Playgroud)
Din*_*nny 28
只是在xml属性中
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recyclerView"
android:scrollbars="vertical" <!-- type of scrollbar -->
android:scrollbarThumbVertical="@android:color/darker_gray" <!--color of scroll bar-->
android:scrollbarSize="5dp"> <!--width of scroll bar-->
</android.support.v7.widget.RecyclerView>
Run Code Online (Sandbox Code Playgroud)
Aya*_*fov 11
我更愿意使用ContextThemeWrapper它.
首先在Style.xml中定义:
<style name="ScrollbarRecyclerView" parent="android:Widget">
<item name="android:scrollbars">vertical</item>
</style>
Run Code Online (Sandbox Code Playgroud)
然后,无论何时初始化您的RecyclerView使用ContextThemeWrapper:
RecyclerView recyclerView = new RecyclerView(new ContextThemeWrapper(context, R.style.ScrollbarRecyclerView));
Run Code Online (Sandbox Code Playgroud)
您可以在不扩展XML布局的情况下执行此操作,但您需要声明自定义主题属性和样式:
<resources>
<attr name="verticalRecyclerViewStyle" format="reference"/>
<style name="VerticalRecyclerView" parent="android:Widget">
<item name="android:scrollbars">vertical</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
然后将属性的值设置为主题中的样式:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="verticalRecyclerViewStyle">@style/VerticalRecyclerView</item>
</style>
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用垂直滚动条以编程方式创建RecyclerView:
RecyclerView recyclerView = new RecyclerView(context, null, R.attr.verticalRecyclerViewStyle);
Run Code Online (Sandbox Code Playgroud)
使用如下代码:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/categoryRecyclerLayout"
android:layout_width="414dp"
android:layout_height="652dp"
android:scrollbars="vertical" .... />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73697 次 |
| 最近记录: |