2011-06-23 106 views
1

我是Android的初學者,並試圖弄清楚如何在縱向和橫向屏幕上使用不同的佈局文件(main.xml)。android layout-land and onConfigurationChanged

我試圖把res.xml放在res/layout和res/layout-land中,然後重建項目。但是,這對我不起作用。

然後,我在代碼中添加了onConfigurationChanged方法,並在setlayton.main中添加了setContextView。這次我以不同的方向獲得了不同的屏幕布局,但是所有功能都丟失了。有些張貼也表示使用onConfigurationChanged方法並不是最好的主意。

那麼誰能幫我解決這個問題?

感謝,

回答

1

Android會自動使用代表您設備當前狀態的佈局。對於您的特定項目,設備旋轉時應使用layout-land xml文件。當您覆蓋onConfigurationChanged方法並修改清單時,它會告訴Android您將自己處理配置更改,我不建議這樣做,特別是如果您想要加載新佈局的話。

以下是您需要做的事情(測試不同的佈局)。在佈局文件夾中放入一個名爲main的xml文件。對於佈局,只需使用一個用藍色背景填充父項的LinearLayout。現在創建一個名爲main的xml佈局文件,但將其放在layout-land文件夾下。在此佈局中,使用紅色背景。

啓動應用程序,旋轉設備,您應該會看到背景更改顏色。這是因爲該活動正在銷燬並重新啓動新的佈局。

2

轉到您的AndroidManifest.xml這行添加到您的活動代碼:

android:configChanges="orientation"

這告訴Android你想控制你的活動時的取向狀態變化。通常情況下,當方向發生變化時,Android會實際上銷燬您的活動並再次以onCreate()的方式重新創建它,因此,除非狀態保存在方法中,否則所有獲得的數據都將丟失。

+0

我認爲這個狀態應該保存在'onSaveInstanceState()'而不是'onConfigurationChangedd()'中。 – CopsOnRoad

0

嘗試使用onRetainNonConfigurationInstance()和getLastNonConfigurationInstance()方法來解決您的問題。 你也可以使用jrobinson3k1給出的上述sloution。 Thanx。

相關問題