横向模式的滚动状态与纵向模式相同。 当更改配置发生时(在您的情况下为方向),在正常情况下,系统能够保留一些内容,如滚动状态。 但是当滚动到某一水平然后将方向从纵向改变为横向模式时,背景颜色丢失。 但是其他的东西不能被保留,比如这个背景颜色,你在滚动ScrollView之后通过编程改变了这个颜色。 There are different ways,用于在片段中维护关于配置改变的数据;是使用ViewModels的最常见/最健壮的一个。 但在你的情况下作为滚动值是已经保存下来的;您可以直接覆盖onConfigurationChanged并重置那里的背景:
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
updateHeaderBackground(scrollView.getScrollY()); // Change this to scrollView.getScrollX() if you the scroll is horizontal
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// CODE IS OMITTED
if (savedInstanceState != null) // It's not null
updateHeaderBackground(scrollView.getScrollY()); // Change this to scrollView.getScrollX() if you the scroll is horizontal
}
1条答案
按热度按时间igsr9ssn1#
横向模式的滚动状态与纵向模式相同。
当更改配置发生时(在您的情况下为方向),在正常情况下,系统能够保留一些内容,如滚动状态。
但是当滚动到某一水平然后将方向从纵向改变为横向模式时,背景颜色丢失。
但是其他的东西不能被保留,比如这个背景颜色,你在滚动
ScrollView
之后通过编程改变了这个颜色。There are different ways,用于在片段中维护关于配置改变的数据;是使用
ViewModels
的最常见/最健壮的一个。但在你的情况下作为滚动值是已经保存下来的;您可以直接覆盖
onConfigurationChanged
并重置那里的背景:最新消息:
它不会被击中,在更改方向时由于某种原因未调用该方法
这可能是因为清单文件活动节中缺少
android:configChanges="orientation"
但是,我宁愿推荐另一种解决方法:
您可以在
onCreateView()
回调中检查bundle参数是否为空,而不是覆盖onConfigurationChanged()
;对于配置更改,它不应为空: