如何在安卓的Firebase界面中将方向设置为纵向



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

  • 我已将应用程序方向设置为清单中的纵向
  • 我还添加了代码,使我的活动在课堂上成为肖像。

使用样式将自定义界面设置为Firebase界面

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

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

例如:

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

我已经通过在每个活动中以编程方式设置纵向模式来解决此问题。 如果您的目标是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" />

仅供参考,这是我的应用程序主题(这存在于风格中.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>

最新更新