android - 根据设备格式更改 LayoutManager

标签 android android-recyclerview android-cardview linearlayoutmanager

我有一个带有卡片列表的 RecyclerView。我想知道是否可以通过编程将 RecyclerView 的 LayoutManager 更改为 Linear(在使用手机时)和 StaggeredGrid(在使用平板电脑时)。 我最初的想法是在 Activity 上使用相同的代码,只更改 layout.xml,但考虑到 Android 使用不同的 LayoutManager,这似乎并不复杂。 我也尝试过使用 Cardslib 库,但是 reeeaall 被文档弄糊涂了,因为没有自定义卡片的完整示例。 有什么想法吗?

最佳答案

是的,这是可能的。一种解决方案是在您的值文件夹中定义一个 bool 资源。例如,您可以定义:

<bool name="is_phone">true</bool>

在您的 values 文件夹以及您的 values-sw720dp 和 values-sw600dp 中添加相同的资源并设置为 false。

<bool name="is_phone">false</bool>

然后,在您的 Activity 的 onCreate() 中,您可以这样做:

    boolean isPhone = getResources().getBoolean(R.bool.is_phone);

    if (isPhone) {
        // Set linearlayoutmanager for your recyclerview.
    } else {
        // Set staggeredgridlayoutmanager for your recyclerview.
    }

关于android - 根据设备格式更改 LayoutManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35237549/

相关文章:

Android - 尝试重新打开一个已经关闭的对象 : SQLiteQuery using loaderManager

java - 使用 fragment 并滑动 View 而不扩展 fragment Activity

android - 使用 RecyclerView 和 CardView 进行触摸反馈

java - RecyclerView适配器连接错误: no adapter attached

android - 在 Android 应用程序中设置 Firebase

android - 使缓存无效与重建项目

android - 更改 recyclerView 项目背景 onClick?

java - android - RecyclerView 中的单个 RadioButton

Android SearchView 需要点击两次才能展开 View

android - Material Design - 将卡片扩展(过渡)到全屏