Android Studio设计器预览与在设备上看到的不同

时间:2020-09-29 16:30:30

标签: android android-studio android-constraintlayout

我在Android Studio中有一个布局,该布局可以在Android Studio的预览中正确呈现,但是在实际的手机上却有所不同。 预览:Android Studio preview
电话屏幕:Actually seen
我使用FrameLayout中包含的,并且在运行时将其填充不同的内容,在此示例中,使用按钮。默认情况下,重命名字段为GONE,并且在按下rename筹码后,该字段才可见。 done按钮也在卡的顶部。

XML是:

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_weight="1"
        android:text="name"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


    <FrameLayout
        android:id="@+id/frameLayout"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/name">

        <ViewStub
            android:id="@+id/card_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </FrameLayout>

    <com.google.android.material.chip.ChipGroup
        android:id="@+id/chipGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/frameLayout"
        app:layout_constraintVertical_bias="0.0">

        <com.google.android.material.chip.Chip
            android:id="@+id/delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checkable="false"
            android:text="delete"
            app:checkedIconVisible="false"
            app:chipIconVisible="false"
            app:closeIconVisible="false" />

        <com.google.android.material.chip.Chip
            android:id="@+id/rename"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checkable="false"
            android:text="rename"
            app:checkedIconVisible="false"
            app:chipIconVisible="false"
            app:closeIconVisible="false" />

    </com.google.android.material.chip.ChipGroup>

    <EditText
        android:id="@+id/newname"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:ems="10"
        android:hint="Enter new name..."
        android:inputType="text"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/done"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/chipGroup"
        app:layout_constraintVertical_bias="0.0"
        tools:visibility="visible" />

    <Button
        android:id="@+id/done"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_marginEnd="8dp"
        android:text="done"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="@+id/newname"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@+id/newname"
        tools:visibility="visible" />

</androidx.constraintlayout.widget.ConstraintLayout>

1 个答案:

答案 0 :(得分:0)

我认为问题在于您的框架布局具有android:layout_height="match_parent"。这可能会引起问题。尝试将高度设置为固定值或包装内容,具体取决于您要添加到存根中的视图。

如果要实现此功能,则可能会使用垂直LinearLayout而不是ConstraintLayout,并在文本字段和按钮中再加上一个LinearLayout。我发现过度使用ConstraintLayout通常会导致奇怪的布局问题。