Android App Layout在物理设备上崩溃

时间:2018-03-18 15:04:06

标签: android xml android-layout

Android Studio中的布局和元素看起来就像我想要的那样但是只要我在设备上安装APK,布局就会崩溃。所有视图都在另一个视图的顶部折叠,这不是Android Studio的预览中显示的...

我使用线性布局和相对布局。我在1-2yrs之前使用过Android工作室并且没有约束布局这样的东西,现在每次创建布局时我都会遇到约束错误。

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.simultaneousequations.spacelaunchx.spacelaunchx.MainActivity">

    <LinearLayout
        android:id="@+id/linearLayoutTop"
        android:layout_width="0dp"
        android:layout_height="101dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="11dp"
        android:orientation="vertical"
        app:layout_constraintBottom_toTopOf="@+id/linearLayoutCenter"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <RelativeLayout
            android:id="@+id/relativeLayoutTop"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorLightGrey">

            <LinearLayout
                android:id="@+id/linearLayoutTopImage"
                android:layout_width="110dp"
                android:layout_height="match_parent"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/iridumNEXT40_50"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="true"
                    android:layout_weight="1"
                    android:adjustViewBounds="false"
                    android:cropToPadding="false"
                    android:scaleType="fitStart"
                    app:srcCompat="@mipmap/iridiummission5" />
            </LinearLayout>

            <TextView
              android:id="@+id/iridium5Text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignParentTop="true"
              android:layout_marginTop="12dp"
              android:layout_toEndOf="@+id/linearLayoutTopImage"
              android:layout_toRightOf="@+id/linearLayoutTopImage"
              android:fontFamily="sans-serif-condensed"
              android:text="Iridium NEXT 40 50"
              android:textAlignment="textStart"
              android:textAllCaps="false"
              android:textAppearance="@style/TextAppearance.AppCompat.Body1"
              android:textColor="@color/colorRedDragon"
              android:textSize="16sp"
              android:textStyle="bold|italic" />

        </RelativeLayout>
    </LinearLayout>

    <LinearLayout

        android:id="@+id/linearLayoutCenter"
        android:layout_width="400dp"
        android:layout_height="101dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="101dp"
            android:background="@color/colorLightGrey"
            tools:layout_editor_absoluteX="8dp"
            tools:layout_editor_absoluteY="109dp">

            <LinearLayout
                android:id="@+id/linearLayoutCenterImage"
                android:layout_width="110dp"
                android:layout_height="match_parent"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/crs14"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="true"
                    android:layout_weight="1"
                    android:scaleType="fitStart"
                    app:srcCompat="@mipmap/crs14" />
            </LinearLayout>

            <TextView
              android:id="@+id/crs14Text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignParentTop="true"
              ndroid:layout_marginTop="16dp"
              android:layout_toEndOf="@+id/linearLayoutCenterImage"
              android:layout_toRightOf="@+id/linearLayoutCenterImage"
              android:fontFamily="sans-serif-condensed"
              android:text="SpaceX NASA - CRS-14"
              android:textAlignment="center"
              android:textAllCaps="false"
              android:textAppearance="@style/TextAppearance.AppCompat.Body1"
              android:textColor="@color/colorRedDragon"
              android:textSize="18sp"
              android:textStyle="bold|italic" />

        </RelativeLayout>
    </LinearLayout>

    <LinearLayout

        android:id="@+id/linearLayoutCenterBottom"
        android:layout_width="400dp"
        android:layout_height="101dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="101dp"
            android:background="@color/colorLightGrey"
            tools:layout_editor_absoluteX="8dp"
            tools:layout_editor_absoluteY="109dp">

            <LinearLayout
                android:id="@+id/linearLayoutCenterBottomImage"
                android:layout_width="110dp"
                android:layout_height="match_parent"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/bhu"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="true"
                    android:layout_weight="1"
                    android:scaleType="fitCenter"
                    app:srcCompat="@mipmap/spacexlogo"
                    tools:layout_editor_absoluteX="0dp"
                    tools:layout_editor_absoluteY="101dp" />
            </LinearLayout>

            <TextView
               android:id="@+id/bhuText"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_alignParentTop="true"
               android:layout_marginTop="12dp"
               android:layout_toEndOf="@+id/linearLayoutCenterBottomImage"
               android:layout_toRightOf="@+id/linearLayoutCenterBottomImage" 
               android:fontFamily="sans-serif-condensed"
               android:text="Bangabandhu-1"
               android:textAlignment="center"
               android:textAllCaps="false"
                android:textAppearance="@style/TextAppearance.AppCompat.Body1"
                android:textColor="@color/colorRedDragon"
                android:textSize="18sp"
                android:textStyle="bold|italic" />

        </RelativeLayout>
    </LinearLayout>

</android.support.constraint.ConstraintLayout>

我做错了什么?

1 个答案:

答案 0 :(得分:0)

好像你不熟悉ConstraintLayout

没关系。如果您不想使用ConstraintLayout,请不要使用它。使用它不是必需的。

您只需将根布局更改为LinearLayoutRelativeLayout或您希望根据自己的要求使用的任何其他布局。

我正在给你在这种情况下应该使用的代码。在该代码中,我使用RelativeLayout作为根布局,因为您使用的是layout_alignParentBottom类似的属性。

<?xml version="1.0" encoding="utf-8"?> 
<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_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.companys.appx.appx.MainActivity">

    <LinearLayout
        android:id="@+id/linearLayoutTop"
        android:layout_width="0dp"
        android:layout_height="101dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="11dp"
        android:orientation="vertical">

        <RelativeLayout
            android:id="@+id/relativeLayoutTop"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorLightGrey">

            <LinearLayout
                android:id="@+id/linearLayoutTopImage"
                android:layout_width="110dp"
                android:layout_height="match_parent"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/iridumNEXT40_50"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="true"
                    android:layout_weight="1"
                    android:adjustViewBounds="false"
                    android:cropToPadding="false"
                    android:scaleType="fitStart"
                    app:srcCompat="@mipmap/iridiummission5" />
            </LinearLayout>

            <TextView
              android:id="@+id/iridium5Text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignParentTop="true"
              android:layout_marginTop="12dp"
              android:layout_toEndOf="@+id/linearLayoutTopImage"
              android:layout_toRightOf="@+id/linearLayoutTopImage"
              android:fontFamily="sans-serif-condensed"
              android:text="Iridium NEXT 40 50"
              android:textAlignment="textStart"
              android:textAllCaps="false"
              android:textAppearance="@style/TextAppearance.AppCompat.Body1"
              android:textColor="@color/colorRedDragon"
              android:textSize="16sp"
              android:textStyle="bold|italic" />

        </RelativeLayout>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayoutCenter"
        android:layout_width="400dp"
        android:layout_height="101dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="101dp"
            android:background="@color/colorLightGrey"
            tools:layout_editor_absoluteX="8dp"
            tools:layout_editor_absoluteY="109dp">

            <LinearLayout
                android:id="@+id/linearLayoutCenterImage"
                android:layout_width="110dp"
                android:layout_height="match_parent"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/crs14"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="true"
                    android:layout_weight="1"
                    android:scaleType="fitStart"
                    app:srcCompat="@mipmap/crs14" />
            </LinearLayout>

            <TextView
              android:id="@+id/crs14Text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignParentTop="true"
              android:layout_marginTop="16dp"
              android:layout_toEndOf="@+id/linearLayoutCenterImage"
              android:layout_toRightOf="@+id/linearLayoutCenterImage"
              android:fontFamily="sans-serif-condensed"
              android:text="SpaceX NASA - CRS-14"
              android:textAlignment="center"
              android:textAllCaps="false"
              android:textAppearance="@style/TextAppearance.AppCompat.Body1"
              android:textColor="@color/colorRedDragon"
              android:textSize="18sp"
              android:textStyle="bold|italic" />

        </RelativeLayout>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayoutCenterBottom"
        android:layout_width="400dp"
        android:layout_height="101dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="101dp"
            android:background="@color/colorLightGrey"
            tools:layout_editor_absoluteX="8dp"
            tools:layout_editor_absoluteY="109dp">

            <LinearLayout
                android:id="@+id/linearLayoutCenterBottomImage"
                android:layout_width="110dp"
                android:layout_height="match_parent"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/bhu"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="true"
                    android:layout_weight="1"
                    android:scaleType="fitCenter"
                    app:srcCompat="@mipmap/spacexlogo"
                    tools:layout_editor_absoluteX="0dp"
                    tools:layout_editor_absoluteY="101dp" />
            </LinearLayout>

            <TextView
               android:id="@+id/bhuText"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_alignParentTop="true"
               android:layout_marginTop="12dp"
               android:layout_toEndOf="@+id/linearLayoutCenterBottomImage"
               android:layout_toRightOf="@+id/linearLayoutCenterBottomImage" 
               android:fontFamily="sans-serif-condensed"
               android:text="Bangabandhu-1"
               android:textAlignment="center"
               android:textAllCaps="false"
               android:textAppearance="@style/TextAppearance.AppCompat.Body1"
               android:textColor="@color/colorRedDragon"
               android:textSize="18sp"
               android:textStyle="bold|italic" />

        </RelativeLayout>
    </LinearLayout>

</RelativeLayout>

如果代码中有任何错误(拼写错误),请更改它。

唯一的一点是使用RelativeLayout作为根布局,而不是ConstraintLayout

在上面的代码中,我删除了第一个ConstraintLayout中的所有LinearLayout属性,因为根布局不再是ConstraintLayout

此技巧将消除此问题。问题出现了,因为ContraintLayout有自己的规则而你没有遵循。但是现在,当您更改根布局时,问题将不复存在。