gpt4 book ai didi

android - 使用 GridLayoutManager 和 RecyclerView 更改列数

转载 作者:IT王子 更新时间:2023-10-28 23:40:12 26 4
gpt4 key购买 nike

在我的 fragment 中,我通过以下方式设置我的 GridLayout:mRecycler.setLayoutManager(new GridLayoutManager(rootView.getContext(), 2));

所以,我只想在用户旋转手机/平板电脑时将 2 更改为 4。我已经阅读了有关 onConfigurationChanged 的内容,并试图让它适用于我的情况,但它的方式并不正确。当我旋转手机时,应用程序崩溃...

你能告诉我如何解决这个问题吗?

这是我找到解决方案的方法,但无法正常工作:

  @Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);

int orientation = newConfig.orientation;

if (orientation == Configuration.ORIENTATION_PORTRAIT) {
mRecycler.setLayoutManager(new GridLayoutManager(mContext, 2));
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
mRecycler.setLayoutManager(new GridLayoutManager(mContext, 4));
}
}

提前致谢!

最佳答案

如果您有多个条件或在多个地方使用该值,这可能会很快失控。我建议创建以下结构:

res
- values
- integers.xml
- values-land
- integers.xml

其中 res/values/integers.xml 是:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="gallery_columns">2</integer>
</resources>

res/values-land/integers.xml 是:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="gallery_columns">4</integer>
</resources>

然后代码变成(并且永远保留)如下:

final int columns = getResources().getInteger(R.integer.gallery_columns);
mRecycler.setLayoutManager(new GridLayoutManager(mContext, columns));

您可以轻松地看到添加确定列数的新方法是多么容易,例如使用 -w500dp/-w600dp/-w700dp 资源文件夹而不是 -land

如果您不想弄乱其他(更相关的)资源,也可以很容易地将这些文件夹分组到单独的资源文件夹中:

android {
sourceSets.main.res.srcDir 'src/main/res-overrides' // add alongside src/main/res
}

关于android - 使用 GridLayoutManager 和 RecyclerView 更改列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29579811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com