横向模式在 Android Studio 模拟器中不起作用?

Posted

技术标签:

【中文标题】横向模式在 Android Studio 模拟器中不起作用?【英文标题】:landscape mode not working in Android Studio Emulator? 【发布时间】:2020-01-09 01:16:12 【问题描述】:

以下示例来自项目https://github.com/googlecodelabs/android-navigation,布局文件来自https://github.com/googlecodelabs/android-navigation/tree/master/app/src/main/res

我在 Android Studio Emulator 中进行了纵向和横向模式的测试,您可以在 A1.pngA2.png 看到结果。

Android Studio Emulator 中似乎无法使用横向模式。

我在真机上测试了同样的代码,你可以在B1.pngB2.png

看到结果

横屏模式在真手机上运行良好,Android Studio Emulator 使用横屏模式有什么问题?

顺便说一句,我已阅读文章Switching to landscape mode in Android Emulator

navigation_activity.xml

<androidx.drawerlayout.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_
    android:layout_
    tools:context="com.example.android.codelabs.navigation.MainActivity">

    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="vertical">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_
            android:layout_
            android:background="@color/colorPrimary"
            android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar" />

        <fragment
            android:id="@+id/my_nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_
            android:layout_
            app:defaultNavHost="true"
            app:navGraph="@navigation/mobile_navigation" />
    </LinearLayout>

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_
        android:layout_
        android:layout_gravity="start"
        app:menu="@menu/nav_drawer_menu" />

</androidx.drawerlayout.widget.DrawerLayout>

navigation_activity.xml(h470dp)

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:orientation="vertical"
    tools:context="com.example.android.codelabs.navigation.MainActivity">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_
        android:layout_
        android:background="@color/colorPrimary"
        android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar" />

    <fragment
        android:id="@+id/my_nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_
        android:layout_
        android:layout_weight="1"
        app:defaultNavHost="true"
        app:navGraph="@navigation/mobile_navigation" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_nav_view"
        android:layout_
        android:layout_
        app:menu="@menu/bottom_nav_menu" />
</LinearLayout>

navigation_activity.xml (w960dp)

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context="com.example.android.codelabs.navigation.MainActivity">

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_
        android:layout_
        android:layout_alignParentStart="true"
        app:elevation="0dp"
        app:headerLayout="@layout/nav_view_header"
        app:menu="@menu/nav_drawer_menu" />

    <View
        android:layout_
        android:layout_
        android:layout_toEndOf="@id/nav_view"
        android:background="?android:attr/listDivider" />

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_
        android:layout_
        android:layout_alignParentTop="true"
        android:layout_toEndOf="@id/nav_view"
        android:background="@color/colorPrimary"
        android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar" />

    <fragment
        android:id="@+id/my_nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_
        android:layout_
        android:layout_below="@id/toolbar"
        android:layout_toEndOf="@id/nav_view"
        app:defaultNavHost="true"
        app:navGraph="@navigation/mobile_navigation" />
</RelativeLayout>

A1.png

A2.png

B1.png

B2.png

添加内容

致无名:谢谢!

我按照你的方法测试了一下,Android Studio 3.5 中横屏模式的模拟器好像还不好用。

真手机横屏菜单图标在横屏模拟器中不显示,可以看到C1.png,为什么? B2.png 是真正的手机横屏模式

C1.png

【问题讨论】:

【参考方案1】:

因为在模拟器控件中单击左旋转/右旋转后,您还需要在右下部分设置设备内部的旋转。

之前

之后

【讨论】:

谢谢!请您看看我在问题中添加的内容吗? 我能问一下为什么“仅在横向”中存在汉堡包样式吗?您是否将其添加到您的代码中? 必须单击两个按钮来旋转设备和屏幕有什么意义?

以上是关于横向模式在 Android Studio 模拟器中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

markdown Android Studio中的横向模式。

在横向模式下强制运行android模拟器

如何在 Android Studio 1.4 中创建横向布局

Android studio 布局编辑器总是横向的?

android studio中的纵向到横向视频视图和控制器重启问题

在 Android Studio 中使用 ActivityInstrumentationTestCase2 在横向测试 Android 应用程序