2014-01-23 52 views
4

我使用我的應用程序的所有可能的佈局都肖像和風景 (小正常大xlarge)但在小屏幕上測試後,我只是不喜歡如何它似乎是這樣的,我想要做的是禁用小布局的景觀。是否有辦法做到這一點? 我發現的所有內容都是清單上的更改,但我相信通過重新配置清單,我會將更改應用於所有佈局。如何禁用小屏幕布局的風景

+0

兄弟給你的屏幕寬度然後我會給你解決方案 –

回答

8

最簡單的方式是爲了更好的把這個所有的活動的onCreate()方法(但你可以檢查設備的類型,並設置方向,把它放在一個BaseActivity類,並從其擴展所有的活動)

@Override 
protected void onCreate(Bundle bundle) { 
    super.onCreate(bundle); 

    if (isLargeDevice(getBaseContext())) { 
     this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 
    } else { 
     this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    } 
} 

您可以使用此方法來檢測,如果該設備是手機或平板電腦:

private boolean isLargeDevice(Context context) { 
     int screenLayout = context.getResources().getConfiguration().screenLayout; 
     screenLayout &= Configuration.SCREENLAYOUT_SIZE_MASK; 

     switch (screenLayout) { 
     case Configuration.SCREENLAYOUT_SIZE_SMALL: 
     case Configuration.SCREENLAYOUT_SIZE_NORMAL: 
      return false; 
     case Configuration.SCREENLAYOUT_SIZE_LARGE: 
     case Configuration.SCREENLAYOUT_SIZE_XLARGE: 
      return true; 
     default: 
      return false; 
     } 
    } 
0

您可以編程handle runtime configuration changes就像你顯明

<activity android:name=".MyActivity" 
     android:configChanges="orientation|keyboardHidden" 
     android:label="@string/app_name"> 

在活動

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 

    ///check the screen size and change it to potrait 
    } 
} 

或檢查this answer,看看如何檢查屏幕尺寸和變化它

-1

例如480屏幕大小的設備:應用在創建方法:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); 
if(width==480){ 

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
} else setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 


}