android LayoutInflater 横竖屏不同布局的处理

        android LayoutInflater可以实现layout的动态载入,在应用开发中非常有用。有时会碰到这样的情况,横竖屏需要不同的布局,分别在layout-land和layout-port下建立了同名的文件。如果没有限定在横竖屏切换的时候,activity不被销毁,即在AndroidManifest.xml中没有加入android:configChanges="orientation|screenSize|keyboardHidden", 则问题很简单,在横竖屏切换的时候,activity每次都要经历destroy和create的过程,那么系统自动在activity create的时候,加载横屏或者竖屏的layout。

        但是如果我们限定了横竖屏切换的时候,activity不能被销毁,那么在横竖屏切换的时候,不会触发activity的onCreate,那么这个时候怎么让系统加载不同的layout呢?显然应该在onConfigurationChanged中,判断当Configuration类的实例中的orientation为Configuration.ORIENTATION_LANDSCAPE或Configuration.ORIENTATION_PORTRAIT分别做不同的处理。我们当然的想法是在这里重新调用LayoutInflater中的inflate函数,以加载新的layout。但在实际测试中发现似乎不起作用,布局仍然为打开应用时的布局。一个变通的方法时此时利用view中的getLayoutParams获取layout参数,并且对layoutParams重新设置。此时屏幕将会加载新的layout布局。

        至于为什么试图在onConfigurationChanged中LayoutInflater中的inflate重新加载layout会不起作用,将在另一篇中讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值