web-dev-qa-db-ja.com

ConstraintLayoutは、app:layout_constrainedHeight = "true"でTextViewの最後の行を非表示にします

wrap_contentプロパティでlayout_constrainedHeightConstraintLayoutに設定して高さを使用しようとすると、TextViewの最後の行が非表示になるtrue(バージョン1.1.3)の奇妙な動作に気づきました。

layout_constrainedHeightの場合:

First image

layout_constrainedHeightなし:

Second image

ソースコード:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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">

    <TextView
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_margin="16dp"
        Android:text="Lorem..."
        app:layout_constrainedHeight="true"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

ConstraintLayoutwrap_contentを使用したいときはいつでも、layout_constrainedHeightをtrueに設定する必要があると思いましたが、これにより奇妙なバグが発生することがあります。何か不足していますか?

[〜#〜]編集[〜#〜]

TextViewの周りのマージンを削除すると、うまく機能します。 ConstraintLayoutwrap_contentとマージンに問題があるようです。

5
Nominalista

TextViewの下部にもう1つ制約を追加してみてください-app:layout_constraintBottom_toBottomOf="parent"またはapp:layout_constraintBottom_toTopOf="@id/someOtherView"とこのsomeOtherViewには、親に対する下部制約が必要です。順番に縦のチェーンが必要ですapp:layout_constrainedHeight動作します。

それが役に立てば幸い。

0
Pavlo Ostasha