Android Studio不会将布局从横向更改为纵向

时间:2018-08-10 07:09:15

标签: android android-layout

我正在Android Studio中进行大学项目,但是遇到了这个问题:菜单从横向转换为纵向,反之亦然。

这是浮动操作菜单肖像(menu_piu.xml)的代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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_width="match_parent"
android:layout_height="match_parent">

<com.github.clans.fab.FloatingActionMenu
    android:id="@+id/menu_floating"
    android:layout_width="285dp"
    android:layout_height="315dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="10dp"
    android:layout_marginEnd="16dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="1.0"
    app:menu_animationDelayPerItem="50"
    app:menu_backgroundColor="@android:color/transparent"
    app:menu_buttonSpacing="0dp"
    app:menu_colorNormal="@color/colorPrimary"
    app:menu_colorPressed="@color/colorAccent"
    app:menu_colorRipple="#99FFFFFF"
    app:menu_fab_size="normal"
    app:menu_icon="@drawable/fab_add"
    app:menu_labels_colorNormal="#333333"
    app:menu_labels_colorPressed="#444444"
    app:menu_labels_colorRipple="#66FFFFFF"
    app:menu_labels_cornerRadius="3dp"
    app:menu_labels_ellipsize="none"
    app:menu_labels_hideAnimation="@anim/fab_slide_out_to_left"
    app:menu_labels_margin="0dp"
    app:menu_labels_maxLines="-1"
    app:menu_labels_padding="8dp"
    app:menu_labels_paddingBottom="4dp"
    app:menu_labels_paddingLeft="8dp"
    app:menu_labels_paddingRight="8dp"
    app:menu_labels_paddingTop="4dp"
    app:menu_labels_position="right"
    app:menu_labels_showAnimation="@anim/fab_slide_in_from_left"
    app:menu_labels_showShadow="true"
    app:menu_labels_singleLine="false"
    app:menu_labels_textColor="#FFFFFF"
    app:menu_labels_textSize="14sp"
    app:menu_openDirection="up"
    app:menu_shadowColor="#66000000"
    app:menu_shadowRadius="4dp"
    app:menu_shadowXOffset="1dp"
    app:menu_shadowYOffset="3dp"
    app:menu_showShadow="true">

    <com.github.clans.fab.FloatingActionButton

        android:id="@+id/aggiornamento_stato"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ico_aggiornamento_stato"
        app:fab_colorNormal="@color/colorPrimary"
        app:fab_colorPressed="@color/colorAccent"
        app:fab_colorRipple="#FFFFFF"
        app:fab_label="Aggiornamento stato" />

    <com.github.clans.fab.FloatingActionButton

        android:id="@+id/ricerca"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ico_ricerca"
        app:fab_colorNormal="@color/colorPrimary"
        app:fab_colorPressed="@color/colorAccent"
        app:fab_colorRipple="#FFFFFF"
        app:fab_label="Ricerca" />

    <com.github.clans.fab.FloatingActionButton

        android:id="@+id/profilo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ico_profilo"
        app:fab_colorNormal="@color/colorPrimary"
        app:fab_colorPressed="@color/colorAccent"
        app:fab_colorRipple="#FFFFFF"
        app:fab_label="Profilo" />

    <com.github.clans.fab.FloatingActionButton
        android:id="@+id/lista_amici"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ico_amici"
        app:fab_colorNormal="@color/colorPrimary"
        app:fab_colorPressed="@color/colorAccent"
        app:fab_colorRipple="#FFFFFF"
        app:fab_label="Lista amici" />

</com.github.clans.fab.FloatingActionMenu>

其他菜单(menu_piu_land.xml)相同,但没有浮动操作菜单。它应该水平显示按钮以简化项目。

我将这些文件包含在layout \ activity_home.xml(<include layout="@layout/menu_piu"/>)和land \ activity_home.xml(<include layout="@layout/menu_piu_land"/>)中。

当我在Android Studio模拟器中测试该应用程序时,它更改了视图,但没有更改菜单:显示的首页与开始时的显示方式相同。我在做什么错了?

更新

这是activity_home.xml和land \ activity_home.xml的代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.punta.geopost.home">

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />

    <include layout="@layout/menu_piu"/> // <include layout="@layout/menu_piu_land"/>

</android.support.constraint.ConstraintLayout>

这是我的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.punta.geopost">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<application

    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="AIzaSyA8fzesjeCV0_X3PolMIXc9DbZ1er05-SA"/>

    <activity
        android:name=".login"
        android:noHistory="true"
        android:configChanges="orientation|screenSize" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".home"
        android:configChanges="orientation|screenSize" />
    <activity
        android:name=".profilo"
        android:configChanges="orientation|screenSize" />
    <activity
        android:name=".ricerca"
        android:configChanges="orientation|screenSize" />
    <activity
        android:name=".stato"
        android:configChanges="orientation|screenSize" />
    <activity
        android:name=".amici"
        android:configChanges="orientation|screenSize" />
</application>

3 个答案:

答案 0 :(得分:1)

了解“ Android活动生命周期”。它们对于您的应用程序流程至关重要。 每当活动改变方向时,onCreate()方法都会重新启动,因此您可以使用 savedInstanceState 。您必须在那里检查这些更改。 并在此处发布清单文件。

希望这会有所帮助。

答案 1 :(得分:1)

正确的文件夹是:

  • res / layout和res / layout-land
  • 文件名称应与在Activity的onCreate中使用的名称相同,例如setContentView(R.layout.menu_piu);

More details here

快乐的编码和学习!

P.S .:避免硬编码,将字符串移动到strings.xml,将值移动到dimens.xml

答案 2 :(得分:1)

问题是清单中的android:configChanges =“ orientation | screenSize”。此标志阻止您在配置更改时重新创建活动,因此永远不会从活动中选择横向布局。从manifest.xml的活动“ home”中删除该标志

<activity android:name=".home" />