簡體   English   中英

如何在Android的firebase UI中將方向設置為縱向

[英]How to set the orientation to portrait in firebase UI in Android

我正在使用 firebase UI 進行身份驗證,在 ios 的情況下,方向不是問題,如果是 android,如果手機的屏幕方向是自動旋轉的,firebase UI 也會旋轉。

  • 我已在清單中將應用程序方向設置為縱向
  • 我還添加了代碼來在我的班級中制作我的活動肖像。

將自定義 UI 設置為具有樣式的 Firebase UI

    <style name="FirebaseLoginTheme" parent="FirebaseUI">
    <item name="android:screenOrientation">portrait</item>
    <item name="android:windowContentOverlay">@null</item>
    </style>

不起作用。 他們有什么方法可以將其限制為肖像。

在清單文件中添加您的方向,如下所示:

<activity
       android:name=".YourActivity"
       android:screenOrientation="portrait"
       android:theme="@style/FirebaseLoginTheme" />

你的風格

  <style name="FirebaseLoginTheme" parent="FirebaseUI">
   <item name="android:windowContentOverlay">@null</item>
  </style>

我通過在每個活動中以編程方式設置縱向模式解決了這個問題。 如果您的目標是 Android 8+,您可能會從某些 com.firebase.ui.auth.ui 活動中收到錯誤“只有全屏活動可以請求方向”,這就是為什么我使用了 try catch 但您的登錄活動仍將鎖定為肖像模式。

將此添加到您的應用程序類中,並記住將其包含在清單的應用程序標記中( android:name=".MyApplication"

public class MyApplication extends Application{


public MyApplication() {

}


    registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
        @Override
        public void onActivityCreated(Activity activity, Bundle bundle) {

            try {
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            }catch (Exception e){
            }

        }

        @Override
        public void onActivityStarted(Activity activity) {

        }

        @Override
        public void onActivityResumed(Activity activity) {

        }

        @Override
        public void onActivityPaused(Activity activity) {

        }

        @Override
        public void onActivityStopped(Activity activity) {

        }

        @Override
        public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {

        }

        @Override
        public void onActivityDestroyed(Activity activity) {

        }
    });
}

}

將此添加到您的清單中:

 <activity
            android:screenOrientation="landscape"
            android:name="com.firebase.ui.auth.KickoffActivity"
            tools:replace="android:theme"
            android:theme="@style/AppTheme" />

僅供參考,這是我的 AppTheme(它存在於 style.xml 中)

    <style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowFullscreen">true</item>
</style>

只需在AuthUI.SignInIntentBuilder對象上調用setLockOrientation(true)

例如:

startActivityForResult(auth.createSignInIntentBuilder().setAvailableProviders(idProviders).setLockOrientation(true).build(), RC_SIGN_IN);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM