- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试新的 RecyclerView
结合 LayoutManager
和 LinearLayoutManager
的标准实现。我的目标是让 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#onPostCreate
或 Activity#onResume
上设置方向(换句话说,在保存的状态恢复后),这样保存的状态就不会覆盖你的方向值.
更新从版本 21 开始,LLM 将不会保留配置更改的方向,因此您的代码应该按原样工作。您无需关心保存的状态。
进行此更改是因为保存的状态应该负责保存变量状态,而方向是我们可以期望开发人员在每次创建时设置的配置。
关于android - 电话旋转后 LinearLayoutManager setOrientation 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24672556/
我正在尝试制作类似于 Instagram 过滤器布局的布局。基本上,当您选择一个过滤器时,它会滚动到您选择的项目 + 1,向您显示还有更多过滤器。 我目前正在尝试为我的水平 RecyclerView
在 GridLayoutManager 中,我能够设置跨度计数,这使得 View 内的项目可以调整大小,以便能够水平适应该跨度计数。 我有一个 LinearLayoutManager,我想以同样的方式
我有一个在 fragment 中实现的 RecyclerView,我正在尝试向代码中添加分隔符。我让 RecylcerView 按预期工作,但 LinearLayoutManager 无法解析 get
我需要修改与 RecyclerView 一起使用的垂直 LinearLayoutManager 以便它可以水平滚动。 当 RecyclerView 垂直滚动时,它会添加新项目,因为我正在扩展 Line
我的 Activity 正在显示一个带有 LinearLayoutManager 的 RecyclerView。我想获取列表中的第一项 (View)。根据this post's accepted an
我正在尝试做这样的事情: RecyclerAdapter recyclerAdapter; LinearLayoutManager recyclerManager; //set items.... r
我的 LinearLayoutManager 有一个错误,当我运行这段代码时它说 error: incompatible types: NotificationFragment cannot be c
我想将 RecyclerView 滚动到某个位置,我使用 LinearLayoutManager.scrollToPositionWithOffset() 滚动,但它不起作用。谁能帮帮我? 我的代码:
我开始使用 Kotlin 构建一个电影数据库应用程序,这是基于我在网上找到的教程(详见 this link。在构建电影 fragment 文件时,我注意到一个“未解析的引用:LinearLayoutM
我想要一个顶部有标题的 ListView 样式的 RecyclerView,并且我不希望标题 View 被回收,永远。 我对 RecyclerView 和 LinearLayoutManager 是全
我正在尝试新的 RecyclerView 结合 LayoutManager 和 LinearLayoutManager 的标准实现。我的目标是让 LayoutManager 在设备处于纵向时水平绘制我
我正在使用 RecyclerView 和相应的 LinearLayoutManager。我在我的应用程序的一部分中添加了一些自定义滚动功能,我将在其中翻译自定义 header 对象以及根据此项目建模的
我基本上是在尝试实现这个设计原则(from Google's Material Design): 因此,我创建了一个带有 LinearLayoutManager 的父级 RecyclerView,然后
除了这两个,我可以从 Android 库中导入其他所有内容。我正在尝试从 android.support.v7.widget 导入它们,但这不起作用,但是从 android.support.v4.wi
这似乎是一个简单的解决方案,但似乎设置 private RecyclerView mRecyclerView; private RecyclerView.Adapter mAdapter; priva
目前我正在使用以下代码来检查是否应该启用 SwipeRefreshLayout。 private void laySwipeToggle() { if (mRecyclerView.getCh
我有一个项目列表。这些项目按日期排序。日期早于现在的项目(“旧”项目)在用户打开应用程序时不应该可见,但用户应该能够通过将列表滚动到顶部来查看它们。 我找到第一个带有 future 日期的项目("ne
IllegalArgumentException: LinearLayoutManager is already attached to a RecyclerView 当我尝试为我的 Recycler
我有一个 fragment ,其中有 RecyclerView 和 LinearLayoutManager,其中有 CardView 项。单击项目应滚动到顶部有一个 float 操作按钮。我已经尝试使
是否可以与 RecyclerView 中的项目重叠? 我正在尝试使用 LinearLayoutManager。 我的要求与 LinearLayoutManager 中的要求相同,只需将内部的项目从上到
我是一名优秀的程序员,十分优秀!