2016-07-01 41 views
1

我有一個活動A,它有兩種類型的佈局。手機具有單一佈局,而平板電腦具有主 - 佈局佈局。 Master-Detail佈局適用於7英寸風景和10英寸平板電腦。 我用以下佈局預選賽:安卓版面選擇問題

-layout - for phones 
-layout-sw720dp - for 10 inch tablet 
-layout-w820dp-land - for 7 inch tablet landscape 
-layout-h820dp - for 7 inch tablet portrait 

,直到目前一切工作正常。

問題:

現在我想的活動,在縱向模式下工作的手機,並在7和10英寸平板電腦這兩個方向,併爲我所用下面的資源和大小限定從這個鏈接https://stackoverflow.com/a/14793611/373889

for res/values 
    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
      <bool name="portrait_only">true</bool> 
     </resources> 

for res/values-sw720dp 
    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
      <bool name="portrait_only">false</bool> 
     </resources> 

for res/values-w820dp-land 
     <?xml version="1.0" encoding="utf-8"?> 
     <resources> 
       <bool name="portrait_only">false</bool> 
      </resources> 

for res/values-h820dp 
     <?xml version="1.0" encoding="utf-8"?> 
     <resources> 
       <bool name="portrait_only">false</bool> 
      </resources> 

現在的問題是,在7英寸的平板電腦,如果開始在縱向模式下,顯示在這兩個方向正常手機佈局,如果開始在橫向模式下,顯示主從佈局在這兩個方位。它不工作,因爲它應該工作。手機工作正常,佈局正常,10英寸平板電腦在兩個方向都可以正常工作。

請讓我知道這種方法是否有問題。謝謝。

回答

1

從我的經驗來看,我認爲你應該爲每個屏幕尺寸做一個佈局,我想你是這麼做的。之後setonContentView(...)這樣做:

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y; 

並根據高度和屏幕鎖的寬度或不是設備的方向。要鎖定您可以添加這些行:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

,而對沒有鎖定屏幕不加關係到Android清單或活動的屏幕方向任何東西,旋轉默認情況下啓用。

我希望它的工作,讓我知道。

+1

我實際上已經使用onCreate(); (getResources()。getBoolean(R.bool.portrait_only)){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }' 但問題是它爲兩個方向保持相同的佈局,而我需要正常的肖像佈局和景觀的主從佈局。 – codeSucks