gpt4 book ai didi

Android View 和自定义方向更改,最好的处理方式是什么?

转载 作者:行者123 更新时间:2023-11-30 04:16:29 25 4
gpt4 key购买 nike

我有一个有多个 View 的 Android 应用程序。我通过为我的 Activity 声明 android:configChanges="keyboardHidden|orientation|screenSize" 禁用了自动方向切换。

Q1) 我应该如何在 onConfigurationChanged() 中重新激活 View ?看来我需要使用 setContentView 方法重置内容 View 。是否有另一种方式来通知您现在应该放大布局的横向/纵向版本?我的一些 View 包含非常复杂的 states/modeless 对话框等,它们随时可能出现,因此删除 View 对象并重新实例化它听起来不太对。

问题 2)在 onConfigurationChanged() 中了解我们现在实际上应该激活哪个 View 的最佳方式是什么,即启动方向更改时关注的是什么?我不愿意依赖 getCurrentFocus(),因为它有时可能为空。

最佳答案

Q1) How I should re-activate views in onConfigurationChanged()?

正如您所提到的,setContentView() 是执行此操作的好方法。请记住不要总是将布局 XML 传递给此方法。相反,将您的布局预膨胀到 View 对象中,并将该 View 对象传递给 setContentView。这样,您就不会在每次方向更改时产生重新创建 View 对象的成本。

以下是示例代码 - 可能无法按原样运行;但旨在说明我的观点。

View mLandscapeView;
View myPortraitView

protected void onCreate(Bundle bundle){
View myLandscapeView = getLayoutInflater().inflate(R.layout.my_landscape, null);
View myPortraitView = getLayoutInflater().inflate(R.layout.my_portrait, null);
//...
}

@Override
protected void onConfigurationChanged(Configuration config){
if(config.orientation = Configuration.ORIENTATION_LANDSCAPE){
//adjust mLandscapeView as needed
setContentView(mLandscapeView);
}

// And so on ...

}

关于Android View 和自定义方向更改,最好的处理方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9905931/

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