【问题标题】:How to set the orientation to portrait in firebase UI in Android如何在Android的firebase UI中将方向设置为纵向
【发布时间】:2018-06-22 06:16:52
【问题描述】:

我正在使用 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>

不起作用。他们有什么办法将其限制为肖像。

【问题讨论】:

  • “不起作用”到底是什么意思?强制肖像并不是真正的解决方案,尤其是对于 Android TV 用户而言。
  • 我的应用程序处于 potrait 模式,但如果启用自动旋转,firbase ui 会旋转@Doug Stevenson
  • 那么,在这种情况下,Firebase UI 到底有什么问题?
  • android:screenOrientation="portrait" 将此设置为内部应用程序标签

标签: android firebase firebase-authentication firebaseui


【解决方案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 ,不,它仍然无法旋转应用程序
【解决方案2】:

我通过在每个活动中以编程方式设置纵向模式解决了这个问题。 如果您以 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) {

        }
    });
}

}

【讨论】:

    【解决方案3】:

    将此添加到您的清单中:

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

    【讨论】:

      【解决方案4】:

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

      例如:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-08
        • 2015-01-31
        相关资源
        最近更新 更多