2017-02-16 62 views
0

我有一個android佈局 - main.axml,它根據方向進行更改。我已經覆蓋OnConfigurationChanged,以便可以根據其他條件調整某些圖標(位於此佈局之外)的外觀。我必須設置爲方向和屏幕尺寸的配置變化,這是我的方法:配置更改ScreenSize和方向停止佈局更改

public override void OnConfigurationChanged(Configuration newConfig) 
     { 
      base.OnConfigurationChanged(newConfig); 
      toggle.OnConfigurationChanged(newConfig); 
      animateDrawerIcon(); 
      FabController(); 
     } 

的問題是,佈局不再改變,它保持不變不管方向如何,如果我的方法把的setContentView(ResourceLayout)以上,佈局變化,但是完全是空的。

我真的希望Android能夠處理旋轉/屏幕尺寸變化,我只是想在這種情況發生時調用兩個函數 - 任何人都可以建議如何做到最好?

+0

也許嘗試添加super.onConfigurationChanged(newConfig);? –

+0

這是Xamarin,base.OnConfigurationChanged(newConfig);就像你說的一樣 –

回答

0

如果你想讓Android做到這一點,那麼最簡單的方法是定義兩個佈局的兩個方向。如果橫向佈局與縱向模式中的佈局完全不同,這是理想的。

但是,如果在這裏和那裏有幾位,那麼您應該檢測設備的當前方向,並在onCreate方法中切換按鈕和開關(或任何您想要執行的操作!!!)。在這種情況下,您無需定義多個佈局。

For.eg如果有一個你想成爲僅在portrat模式的按鈕,然後釋放按鈕默認情況下,在你ActivityonCreate可見,通過檢測取向 - getResources().getConfiguration().orientation如果方向是landscape然後只需切換它。

雖然OnConfigurationChanged方法真的很方便,但避免在其中放入大量的邏輯。嘗試上述方法

+0

我可以做到這一點,在onCreate,問題是,按鈕的可見性狀態(在你的例子中)取決於一個整數(反映了導航抽屜選定的位置),它被重置爲 - 1當我旋轉屏幕(我不知道這是爲什麼) –

+0

我的重寫的OnSavedInstanceState是錯誤的,現在糾正,所有的工作。謝謝 –

+0

太好了。這應該是我的下一個評論。 'onSavedInstance'來保存你的UI狀態。 – Dibzmania