2010-07-14 36 views
6

有没有办法在不破坏整个活动的情况下改变ImageView drawable及其相应的drawable的横向模式。我试图再次在onConfigurationChanged回调中设置drawable,但它不起作用。类似这样的东西修改Image onConfigurationChanged

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

当我在景观模式中对活动进行星标以更正drawable时,所以显示资源的位置正确。

回答

6

在您的样本项目只是

iv.setImageDrawable(getResources().getDrawable(R.drawable.android)); 

更换

iv.setBackgroundResource(R.drawable.android); 

我想setBackgroundResource什么也不做,因为相同的资源已经分配给ImageView的。

看看这个
http://open-pim.com/tmp/ImageTest.zip
我想你的方法,它工作得非常适合我。

+0

嗨,感谢您的回复,但它仍然不适合我。我想你忘了在清单中声明android:configChanges =“navigation | orientation”,并重新创建活动。以下是我的代码(链接到Google文档)https://docs.google.com/uc?id=0B6e5v3bLSI3ZYTQyYTRhYTctMDE4MS00M2QzLTk1Y2EtYWU3NmZmZmJiN2Zl&export=download&hl=zh-CN。当你开始活动横向模式或从清单中删除configChange时,一切正常,因此资源被正确定位和加载。 – 2010-07-20 07:25:14

+0

android:configChanges在那里,onConfigurationChanged被调用。请尝试我的示例以确保。我更新了链接,这是不正确的。 – Fedor 2010-07-20 07:37:25

+0

setBackgroundResource是另一个可能的问题 – Fedor 2010-07-20 07:46:47

0

有没有办法改变的ImageView 绘制与其对应的 绘制的景观模式,而不 破坏整个活动。

当您从纵向改变为横向或反之时,活动被重新创建。检查是否调用了onCreate()方法。

如果你想避免这种行为的使用:

android:configChanges="orientation|keyboardHidden" 

ActivityAndroidManifest

-

关于你的问题: 我首先会检查它的第一个称为方向变化后: onConfigurationChangedonCreate

如果onConfigurationChanged被称为第一个,那么你的setContentView()在你的onCreate()方法中取代你的ImageView可绘制。

+0

正如我张贴我不想在配置更改后重新创建活动。是的,我在清单文件中使用了android:configChanges =“orientation | keyboardHidden”,所以我的活动只创建一次,然后在每次更改配置时调用onCongigurationChanged而不重新创建活动,我的目标是更改某些ImageView底层drawable, RES /绘制土地。 – 2010-07-14 14:52:23

+0

OP想要通过他的代码处理方向更改(以避免应用程序重新创建),并且他需要访问横向资源。 – Pentium10 2010-07-14 15:04:14

+0

@Mojo Risin:哦,好的。所以'onConfigurationChanged'被调用,虽然你已经在你的Manifest中设置了它? – Macarse 2010-07-14 15:35:39

0

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

android:configChanges="orientation|screenLayout" 
相关问题