如何在Android Firebase UI中将方向设置为竖屏

3

我正在使用Firebase UI进行身份验证。在iOS的情况下,方向不是问题。但在Android的情况下,如果手机的屏幕方向被自动旋转了,Firebase UI也会跟着旋转。

  • 我已在清单文件中设置应用程序方向为纵向。
  • 我还在我的类中添加了代码,使我的活动成为纵向。

使用样式为Firebase UI设置自定义UI

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

不起作用了。有什么办法能将其限制在纵向吗。


你所说的“不起作用”具体指什么?强制使用纵向模式并不是一个解决方案,特别是对于Android TV用户来说。 - Doug Stevenson
我的应用程序是竖屏模式,但如果启用了自动旋转,Firebase UI 就会被旋转 @ Doug Stevenson - Yadu Mohan
那么,在这种情况下,Firebase UI 的问题到底是什么? - Doug Stevenson
android:screenOrientation="portrait" 设置在应用程序标签内。 - Rohit Maurya
可能是FirebaseUI登录方向的重复问题。 - Android
4个回答

1
在清单文件中加入以下内容以添加您的方向:
<activity
       android:name=".YourActivity"
       android:screenOrientation="portrait"
       android:theme="@style/FirebaseLoginTheme" />

你的样式

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

@Milan Pansuriya,不,它仍然无法工作,但应用程序可以旋转。 - Yadu Mohan

1

只需在AuthUI.SignInIntentBuilder对象上调用setLockOrientation(true)

例如:

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

0
我通过在每个活动中编程设置肖像模式来解决了这个问题。如果你的目标是 Android 8+,你可能会从一些 com.firebase.ui.auth.ui 活动中得到错误“只有全屏活动可以请求方向”,这就是为什么我使用了 try catch,但是你的登录活动仍然被锁定在肖像模式下。

在你的应用程序类中添加以下代码,并记得将它包含在清单文件的 application 标记中 (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) {

        }
    });
}

}

0

将此添加到您的清单中:

 <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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接