2010-07-02 60 views
1

我只是想做的事:如何根據當前屏幕方向設置活動內容?

 
if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) 
    setContentView(R.layout.search_portrait); 
else 
    setContentView(R.layout.search_landscape); 

的問題是 - getRequestedOrientation總是返回-1。

有什麼建議嗎?

回答

5

如果你只是改變佈局,你應該真的考慮將你的肖像佈局放在/res/layout和你的橫向佈局/res/layout-land(同名),Android會自動選擇正確的佈局。

+0

告訴我,這會也像一些奇怪的情況下工作:景觀帶QWERTY鍵盤,景觀大...所有相關鏈接中提到:http://books.google.com/books?id=QdcYzuQx0DYC&pg=PA212&lpg=PA212&dq=/res/layout-land&source=bl&ots=xKaskx_2JU&sig=NjWDE3msogiveEHG4L5HdNWO2yc&hl=zh-CN&ei=HUIuTPuFFMH_nQeI6LneAw&sa=X&oi=book_result&ct=result&resnum=2&ved = 0CBYQ6AEwAQ#v = onepage&q =%2Fres%2Flayout-land&f = false – kape123 2010-07-02 19:48:43

+0

我還沒有嘗試過這種奇特的屏幕配置自己,但是,我相信它確實如此。 – Dave 2010-07-02 20:10:36

+0

@ kape123是的,這將工作。 – yanchenko 2010-07-02 20:16:26

1

嘗試將android:screenOrientation="portrait"android:screenOrientation="landscape"添加到此活動的清單中。這將是默認方向......這是因爲getRequestedOrientation」返回當前請求的活動方向,它可以是其組件清單中請求的方向,或最後請求的setRequestedOrientation方向(int) 」。

0

它必須正常工作,使用此

if(getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE) 

     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    else 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

setContentView(R.layout.main_activity); 

而且也把景觀XML文件中

/RES /佈局土地

注:版式文件名必須是在所有佈局目錄中相同

ie

  • RES /佈局/ activity_main
  • RES /佈局,土地/ activity_main