更改图像onConfigurationChanged

时间:2010-07-14 09:18:47

标签: android user-interface

有没有办法在不破坏整个活动的情况下,使用相应的drawable for Landscape模式更改ImageView drawable。我尝试在onConfigurationChanged回调中再次设置drawable,但它不起作用。像这样的东西

@Override
public void onConfigurationChanged(Configuration conf) {
    super.onConfigurationChanged(conf);
    mImageView.setImageDrawable(getResources().getDrawable(R.drawable.iv));
}

当我以横向模式为活动加注星形以显示正确的可绘制时,可以正确定位资源。

3 个答案:

答案 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

-

关于你的问题: 我首先会检查定向更改后首先调用的内容: onConfigurationChangedonCreate

如果首先调用onConfigurationChanged,那么setContentView()方法中的onCreate()正在替换您的ImageView drawable。

答案 2 :(得分:0)

对于模拟器,除了方向之外,您还需要screenLayout来调用方法。

android:configChanges="orientation|screenLayout"