gpt4 book ai didi

android - 电话旋转后 LinearLayoutManager setOrientation 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:00:02 26 4
gpt4 key购买 nike

我正在尝试新的 RecyclerView 结合 LayoutManagerLinearLayoutManager 的标准实现。我的目标是让 LayoutManager 在设备处于纵向时水平绘制我的项目,并在设备处于横向时垂直绘制它们。为此,我在 Activity 的 onCreate 中使用了以下代码:

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.nextColors);
recyclerView.setAdapter(myAdapter = new MyAdapter(getBaseContext(), myData, myLayout);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
linearLayoutManager.setOrientation(LinearLayout.HORIZONTAL);
} else {
linearLayoutManager.setOrientation(LinearLayout.VERTICAL);
}
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());

如果我在设备处于横向或纵向模式时启动 Activity,这会正常工作。但是,当我在此 Activity 中更改方向时,项目总是水平或垂直绘制,具体取决于 Activity 首次启动时设备的方向。这对我来说没有意义,因为在设备旋转后重新创建 Activity 并且 LayoutManager 应该采用正确的方向。

有没有人知道如何使 setOrientation 与设备方向更改一起工作?

最佳答案

发生这种情况是因为您在 RecyclerView 中恢复已保存状态之前设置了方向。

尝试在 Activity#onPostCreateActivity#onResume 上设置方向(换句话说,在保存的状态恢复后),这样保存的状态就不会覆盖你的方向值.

更新从版本 21 开始,LLM 将不会保留配置更改的方向,因此您的代码应该按原样工作。您无需关心保存的状态。

进行此更改是因为保存的状态应该负责保存变量状态,而方向是我们可以期望开发人员在每次创建时设置的配置。

关于android - 电话旋转后 LinearLayoutManager setOrientation 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24672556/

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