纠正损坏的ConstraintLayout

时间:2018-02-07 23:31:56

标签: android android-layout android-studio android-constraintlayout

我正在掌握约束布局,到目前为止,找到了一些不寻常的东西!

到目前为止,这是我的努力:

enter image description here

这是我想要的方式。

在运行时,事情变得有趣至少可以说:

enter image description here

布局的XML是:

    <FrameLayout 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="my.first.FFragment">

    <!-- TODO: Update blank fragment layout -->

    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/boxStatusLabel"
            android:layout_width="0dp"
            android:layout_height="19dp"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="20dp"
            android:layout_marginTop="28dp"
            android:text="Status: "
            app:layout_constraintEnd_toStartOf="@+id/boxStatusField"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/boxStatusField"
            android:layout_width="0dp"
            android:layout_height="18dp"
            android:layout_marginEnd="176dp"
            android:layout_marginTop="28dp"
            android:text="Unknown"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/lastContactLabel"
            android:layout_width="0dp"
            android:layout_height="19dp"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="20dp"
            android:layout_marginTop="4dp"
            android:text="Last Contacted Time:"
            app:layout_constraintEnd_toStartOf="@+id/lastContactField"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/boxStatusLabel" />

        <TextView
            android:id="@+id/lastContactField"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginEnd="120dp"
            android:layout_marginTop="52dp"
            android:text="Not made contact"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <View
            android:id="@+id/homeLine1"
            android:layout_width="0dp"
            android:layout_height="2dp"
            android:background="@android:color/black"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/systemInUseNameField"
            android:layout_width="0dp"
            android:layout_height="21dp"
            android:layout_marginEnd="152dp"
            android:layout_marginTop="12dp"
            android:text="No system running"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/homeLine1" />

        <ImageView
            android:id="@+id/systemInUseImage"
            android:layout_width="150dp"
            android:layout_height="150dp"
            android:layout_marginBottom="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:src="@drawable/systemInUseImage"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/homeLine1" />

        <TextView
            android:id="@+id/systemInUseLabel"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="20dp"
            android:layout_marginTop="12dp"
            android:text="What's running:"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/homeLine1" />

    </android.support.constraint.ConstraintLayout>

</FrameLayout>

有人可以更正我的XML,我可以将其加载回我的Android Studio进行研究,以了解我的尝试错误的原因吗?将约束布局放在一起时,我对错误的解释也会有所帮助。

3 个答案:

答案 0 :(得分:2)

你有很多硬编码的大小......你的父级FrameLayout也没用。

试试这个:

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="20dp">

    <TextView
        android:id="@+id/boxStatusLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Status: "
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

    <TextView
        android:id="@+id/boxStatusField"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:text="Unknown"
        app:layout_constraintStart_toEndOf="@+id/lastContactLabel"
        app:layout_constraintTop_toTopOf="parent"/>

    <TextView
        android:id="@+id/lastContactLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:text="Last Contacted Time:"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/boxStatusLabel"/>

    <TextView
        android:id="@+id/lastContactField"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="4dp"
        android:text="Not made contact"
        app:layout_constraintStart_toEndOf="@+id/lastContactLabel"
        app:layout_constraintTop_toBottomOf="@+id/boxStatusLabel"/>

    <View
        android:id="@+id/homeLine1"
        android:layout_width="0dp"
        android:layout_height="2dp"
        android:background="@android:color/black"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

    <TextView
        android:id="@+id/systemInUseNameField"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:text="No system running"
        app:layout_constraintStart_toEndOf="@+id/systemInUseLabel"
        app:layout_constraintTop_toTopOf="@+id/systemInUseLabel"/>

    <ImageView
        android:id="@+id/systemInUseImage"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:src="@mipmap/ic_launcher"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/homeLine1"/>

    <TextView
        android:id="@+id/systemInUseLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="12dp"
        android:text="What's running:"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/homeLine1"/>

</android.support.constraint.ConstraintLayout>

答案 1 :(得分:1)

这是我看待我的设备的方式: this is how it looks at my device

显示你的课程正在膨胀这个布局? (MainActivity或Fragment)。

另外我建议将layout_width设置为非零。

修改 我们通过IRC讨论解决问题。我们检查的事情:  1.扩展AppCompatActivity和android.support.v4.app.Fragment  2.最终问题在main_activity.xml中,android:layout_width =&#34; wrap_content&#34; 机器人:layout_height =&#34; WRAP_CONTENT&#34;

FragmentManager.replace()不会像这样工作。请标记为正确并关闭。

答案 2 :(得分:1)

问题是主要活动xml。我的问题的XML在片段中。

此片段属于FrameLayout,其宽度和高度不正确。

我从:

更改了我的主activity.xml布局
<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.BottomNavigationView
    android:id="@+id/navigation"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginEnd="0dp"
    android:layout_marginStart="0dp"
    android:background="?android:attr/windowBackground"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:menu="@menu/navigation" />

<FrameLayout
    android:id="@+id/frame"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="@dimen/activity_horizontal_margin"
    android:layout_marginStart="@dimen/activity_horizontal_margin"
    android:layout_marginTop="@dimen/activity_vertical_margin"
    android:text="Title bbb"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:layout_editor_absoluteX="8dp"
    tools:layout_editor_absoluteY="8dp">

</FrameLayout>

要:

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.BottomNavigationView
    android:id="@+id/navigation"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginEnd="0dp"
    android:layout_marginStart="0dp"
    android:background="?android:attr/windowBackground"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:menu="@menu/navigation" />

<FrameLayout
    android:id="@+id/frame"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="@dimen/activity_horizontal_margin"
    android:layout_marginStart="@dimen/activity_horizontal_margin"
    android:layout_marginTop="@dimen/activity_vertical_margin"
    android:text="Title bbb"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:layout_editor_absoluteX="8dp"
    tools:layout_editor_absoluteY="8dp">

</FrameLayout>

注意FrameLayout上layout_width和layout_height上的变化参数。这是压缩我的片段内容:)