有没有办法在不破坏整个活动的情况下,使用相应的drawable for Landscape模式更改ImageView drawable。我尝试在onConfigurationChanged回调中再次设置drawable,但它不起作用。像这样的东西
@Override
public void onConfigurationChanged(Configuration conf) {
super.onConfigurationChanged(conf);
mImageView.setImageDrawable(getResources().getDrawable(R.drawable.iv));
}
当我以横向模式为活动加注星形以显示正确的可绘制时,可以正确定位资源。
答案 0 :(得分:6)
在您的示例项目中,只需替换
iv.setBackgroundResource(R.drawable.android);
带
iv.setImageDrawable(getResources().getDrawable(R.drawable.android));
我猜setBackgroundResource什么都不做,因为已经为ImageView分配了相同的资源。
看看这个
http://open-pim.com/tmp/ImageTest.zip
我尝试了你的方法,它对我很有用。
答案 1 :(得分:0)
有没有办法改变ImageView 与其相应的可绘制 没有用于横向模式的可绘制 摧毁整个活动。
当您从纵向更改为横向或反之时,将重新创建活动。检查是否调用了onCreate()
方法。
如果您想避免这种行为,请使用:
android:configChanges="orientation|keyboardHidden"
代表Activity
中的AndroidManifest
。
-
关于你的问题:
我首先会检查定向更改后首先调用的内容:
onConfigurationChanged
或onCreate
。
如果首先调用onConfigurationChanged
,那么setContentView()
方法中的onCreate()
正在替换您的ImageView
drawable。
答案 2 :(得分:0)
对于模拟器,除了方向之外,您还需要screenLayout来调用方法。
android:configChanges="orientation|screenLayout"