android - 主题级别的 RecyclerView 样式

标签 android listview styles android-recyclerview themes

我正在尝试在主题 级别为RecyclerView 实现通用样式参数。与 ListView 相比,我使用了如下内容:

定义样式:

<style name="StyleListView" parent="Widget.AppCompat.ListView">
     <item name="android:requiresFadingEdge">vertical</item>
     <item name="android:fadingEdgeLength">10dp</item>
     <item name="android:scrollbars">vertical</item>
</style>

后来在我的自定义主题中使用:

<item name="android:listViewStyle">@style/StyleListView</item>

这对 ListView 来说工作得很好。但是,我无法为 RecyclerView 反射(reflect)这一点,因为我认为它适用于任何类型的列表。

那么,是否有任何可用于 RecyclerView 的预定义样式属性,例如 android:recyclerViewStyle 或任何东西?

如果没有,那么我怎样才能在主题级别实现这一点?

最佳答案

RecyclerView styling at theme level

RecyclerView 现在有一个默认样式属性:recyclerViewStyle,它允许在您的主题中设置默认样式

支持以下属性

    <!-- Class name of the Layout Manager to be used. -->
    <attr name="layoutManager" format="string" />
   
    <!-- ============================= -->
    <!-- Attributes for Layout Manager -->
    <!-- ============================= -->
    <attr name="android:orientation" />
    <attr name="android:descendantFocusability" />
    <attr name="android:clipToPadding" />
    <attr name="spanCount" format="integer"/>
    <attr name="reverseLayout" format="boolean" />
    <attr name="stackFromEnd" format="boolean" />
    <attr name="fastScrollEnabled" format="boolean" />
    <attr name="fastScrollVerticalThumbDrawable" format="reference" />
    <attr name="fastScrollVerticalTrackDrawable" format="reference" />
    <attr name="fastScrollHorizontalThumbDrawable" format="reference" />
    <attr name="fastScrollHorizontalTrackDrawable" format="reference" />

要使用上述功能,请在您的 build.gradle 文件中添加/更新以下依赖项。

dependencies {
    implementation 'androidx.recyclerview:recyclerview:1.1.0-beta05'
}

您可以看到提交 here .

示例:

<强>1。定义您的默认样式

<style name="DefaultRecyclerViewStyle">

    <item name="layoutManager">androidx.recyclerview.widget.GridLayoutManager</item>
    <item name="android:orientation">vertical</item>
    <item name="spanCount">2</item>

</style>

<强>2。将上述样式添加到您的默认主题中

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="recyclerViewStyle">@style/DefaultRecyclerViewStyle</item>
</style>

就是这样。您已经为 RecyclerView 小部件定义了应用程序范围的默认样式。

关于android - 主题级别的 RecyclerView 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39076667/

相关文章:

wpf - 在 WPF 中使用图片或图标代替 DataGridCheckBoxColumn

java - 如何在android中的ExpandableListView中添加三级ListView

asp.net - Response.End 之后关闭窗口

javascript - style.background 与 grb

android - 如何从Android中的ListView获取选中复选框的位置

android - 需要防止Listview Row始终为Listview的100%宽度

WPF ComboBox 具有自定义样式,单击 ComboBox 内部后无法展开 DropDown

java - 在 View 子类中实现监听器是否存在问题?

android - 我们可以在没有物理罗盘的情况下获得罗盘方向吗(例如使用 2 个 GPS 点?)

android - 在 Android 中显示进度对话框