1. ホーム
  2. android

[解決済み] ConstraintLayoutの中のWrap_contentビューが画面の外に伸びる

2022-04-23 16:41:04

質問

を使用して、簡単なチャットバブルを実装しようとしています。 ConstraintLayout . これは、私が実現しようとしていることです。

しかし wrap_content は、私が望んでいることを行いません。余白を尊重しますが、ビューの境界の外に展開されます。以下は、私のレイアウトです。

<?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="wrap_content">

    <TextView
        android:id="@+id/chat_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="16dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintHorizontal_bias="0"
        tools:background="@drawable/chat_message_bubble"
        tools:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sodales accumsan tortor at bibendum."
        android:layout_marginStart="64dp"
        android:layout_marginLeft="64dp"
        android:layout_marginEnd="32dp"
        android:layout_marginRight="32dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp" />
</android.support.constraint.ConstraintLayout>

これは以下のようにレンダリングされます。

を使っています。 com.android.support.constraint:constraint-layout:1.0.0-beta4 .

私のやり方が悪いのでしょうか?バグなのか、それとも単なる直感的でない動作なのか?このような場合 ConstraintLayout (他のレイアウトが使えることは知っています。 ConstrainLayout を具体的に説明します)。

解決方法は?

古くなった。 ベターアンサーを見る

いいえ、現在(1.0ベータ4)のConstraintLayoutでは、あなたが望むことはできません。

  • wrap_content は、ウィジェットに自分自身を測定するように要求するだけで、最終的な制約に対してウィジェットの拡張を制限することはありません。
  • match_constraints (0dp) 意志 は、制約に対してウィジェットのサイズを制限します。 wrap_content の方が小さかったかもしれません(最初の例)。

だから今、あなたはその特別なケースのために運が悪いのです :-/。

さて......私たちは今、このプロジェクトに必要な機能を追加することを考えています。 match_constraints このシナリオに対応するために、( wrap_content ただし、サイズが制約を超えない限り)。

しかし、この新機能が1.0リリースまでに実現することを約束することはできません。

編集 1.0では、この機能を属性で追加しました。 app:layout_constraintWidth_default="wrap" (幅は0dpに設定)。設定された場合、ウィジェットは wrap_content を使用する場合と同じサイズを持ちますが、制約によって制限されます (すなわち、制約を超えて拡張しません)。

更新 現在、これらのタグは非推奨です。代わりにlayout_width="WRAP_CONTENT"とlayout_constrainedWidth="true"を使用してください。