2017-02-21 87 views
0

我想鎖定手機上的整個應用程序的方向大小布局只能肖像,但在平板電腦大小的佈局上允許縱向和橫向。Xamarin Android鎖定方向只能通過手機上的肖像

我知道我可以將活動歸因爲使用特定方向,但是這適用於兩種佈局尺寸。

[Activity(
     Label = "Brs.Members.Droid" 
     , MainLauncher = true 
     , Icon = "@mipmap/icon" 
     , Theme = "@style/Theme.Splash" 
     , NoHistory = true 
     , ScreenOrientation = ScreenOrientation.Portrait)] 
    public class SplashScreen : MvxSplashScreenActivity 
    { 
     public SplashScreen() : base(Resource.Layout.SplashScreen) 
     { 
     } 
    } 

有沒有一種方法可以排除手機尺寸設備上的橫向佈局?

回答

0

您可以做的是首先檢查設備是否爲平板電腦,然後在運行時將方向鎖定爲縱向。

這裏是一個有用的帖子後,以確定該設備是平板電腦:
Determine if the device is a smartphone or tablet?

因此,這裏是你可以做什麼:

  1. 用最小的預選賽創建一個值的資源文件屏幕寬度等於600dp。 (sw600dp)

    文件內設置isTablet的真布爾值:

    <resources> 
        <bool name="isTablet">true</bool> 
    </resources> 
    

    然後正常值文件內(而不會在屏幕尺寸限定符)設置isTablet的假值:

    <resources> 
        <bool name="isTablet">false</bool> 
    </resources> 
    
  2. 然後得到的onCreate的isTablet值,並相應設置方向:

    boolean isTablet = getResources().getBoolean(R.bool.isTablet); 
    if (!isTablet) { 
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    } 
    
+0

這似乎是最好的解決辦法,但我會建議從鏈接的問題增加更多的細節。 –

+0

謝謝,請檢查編輯。 –

3

嘗試下面的代碼,檢查設備是否是平板電腦,然後設置方向:

[Activity(Label = "MyOrientationDemo", MainLauncher = true, Icon = "@drawable/icon")] 
public class MainActivity : Activity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     if (!isPad(this)) 
     { 
      RequestedOrientation = ScreenOrientation.Portrait; 
     } 
     SetContentView (Resource.Layout.Main); 
    } 

    public static bool isPad(Context context) 
    { 
     return (context.Resources.Configuration.ScreenLayout& ScreenLayout.SizeMask)>= ScreenLayout.SizeLarge; 
    } 
} 
相關問題