2010-07-14 37 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" 
相關問題