web-dev-qa-db-ja.com

Android ConstraintLayout TextViewは画面から消えます

写真にあるように、テキストは壁から外れています。これはとても奇妙な振る舞いであり、バグだと思います

以下はスクリーンショットです。

enter image description here

ヘッダーxmlは次のとおりです。

<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"
    Android:background="?android:attr/windowBackground"
    Android:orientation="vertical">

    <TextView
        Android:id="@+id/street_name"
        Android:layout_width="wrap_content"
        Android:layout_height="0dp"
        Android:layout_marginStart="15dp"
        Android:text="street name"
        Android:textColor="?AppTheme.InformationText"
        Android:textSize="14sp"
        Android:textStyle="bold"
        Android:gravity="center"
        Android:layout_marginTop="8dp"
        Android:layout_marginRight="8dp"
        Android:layout_marginBottom="19dp"
        Android:layout_marginLeft="0dp"
        app:layout_constraintWidth_default="wrap"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="@+id/guideline29"
        app:layout_constraintTop_toTopOf="@+id/guideline37"
        app:layout_constraintRight_toLeftOf="@+id/guideline30"
        app:layout_constraintHorizontal_bias="0.605"
        app:layout_constraintVertical_bias="0.0"/>

    <ImageView
        Android:id="@+id/street_view_image"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:adjustViewBounds="true"
        Android:padding="6dp"
        Android:scaleType="fitCenter"
        tools:layout_constraintLeft_creator="1"
        Android:layout_marginLeft="0dp"
        app:layout_constraintLeft_toLeftOf="@+id/country_flag_image"
        app:layout_constraintBottom_toBottomOf="parent"
        Android:layout_marginBottom="0dp"
        app:layout_constraintRight_toLeftOf="@+id/guideline29"
        Android:layout_marginRight="8dp"
        app:layout_constraintTop_toTopOf="@+id/guideline37"
        Android:layout_marginTop="8dp"/>

    <ImageView
        Android:id="@+id/country_flag_image"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        Android:layout_marginLeft="4dp"
        Android:layout_marginStart="4dp"
        Android:layout_marginTop="8dp"
        Android:adjustViewBounds="true"
        Android:paddingBottom="5dp"
        Android:paddingLeft="5dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:layout_constraintLeft_creator="1"
        tools:layout_constraintTop_creator="1"
        />

    <de.hdodenhof.circleimageview.CircleImageView
        xmlns:app="http://schemas.Android.com/apk/res-auto"
        Android:id="@+id/exit_image"
        Android:layout_width="46dp"
        Android:layout_height="46dp"
        Android:layout_marginBottom="8dp"
        Android:layout_marginRight="-4dp"
        Android:src="@drawable/exit_custom"
        app:border_color="#FF000000"
        app:layout_constraintBottom_toBottomOf="@+id/street_view_image"
        app:layout_constraintRight_toRightOf="@+id/street_view_image"
        tools:layout_constraintBottom_creator="1"
        tools:layout_constraintRight_creator="1"
        />

    <Android.support.constraint.Guideline
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/guideline29"
        Android:orientation="vertical"
        app:layout_constraintGuide_percent="0.5"/>

    <Android.support.constraint.Guideline
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/guideline30"
        app:layout_constraintGuide_begin="395dp"
        Android:orientation="vertical"/>

    <Android.support.constraint.Guideline
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/guideline37"
        app:layout_constraintGuide_begin="8dp"
        Android:orientation="horizontal"/>

</Android.support.constraint.ConstraintLayout>

street_nameというTextViewというテキストを画面外に出さないようにするにはどうすればよいですか?私は MaterialDrawer を使用しますが、これが何かと関係があるとは思いません。デバイスは、Android 6.0.1。ConstraintLayoutバージョンcom.Android.support.constraint:constraint-layout:1.0.2 in Android Studio 2.3.3を使用)

12
Erik

セットする Android:layout_width="0dp" にとって street_name。これにより、制約と一致するようになり、境界内に保持する必要があります。

動作しない? street_nameは、右側にguideline30 at 395dp395dp画面の右側から外れていますか?

23
Cheticamp

LayconstraintEnd_toEndOfを追加します
app:layout_constraintEnd_toEndOf = "parent"
and width 0dp
Android:layout_width = "0dp"

幅0dpのみを設定しても機能しません

10
Saini Arun

使用する app:layout_constraintEnd_toEndOf の代わりに app:layout_constraintRight_toRightOfまた、状況によってはRight_otRightが間違って表示される場合があるため

そして、Start_toStartOf の代わりに Left_toLeft

他の人が言ったように、セットAndroid:layout_width="0dp"0dpは一致制約を意味します

2
Yang.L

<TextView Android:id="@+id/street_name"...>には、次のようにAndroid:layout_width="0dp"Android:layout_height="wrap_content"を使用する必要があります。

<TextView
        Android:id="@+id/street_name"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_marginStart="15dp"
        Android:text="street name"
        Android:textColor="?AppTheme.InformationText"
        Android:textSize="14sp"
        Android:textStyle="bold"
        Android:gravity="center"
        Android:layout_marginTop="8dp"
        Android:layout_marginRight="8dp"
        Android:layout_marginBottom="19dp"
        Android:layout_marginLeft="0dp"
        app:layout_constraintWidth_default="wrap"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="@+id/guideline29"
        app:layout_constraintTop_toTopOf="@+id/guideline37"
        app:layout_constraintRight_toLeftOf="@+id/guideline30"
        app:layout_constraintHorizontal_bias="0.605"
        app:layout_constraintVertical_bias="0.0"/>

編集#1:ガイドラインではなく、親によってTextViewの右側を制限する必要があると思います。つまり、app:layout_constraintRight_toLeftOf="@+id/guideline30"app:layout_constraintRight_toRightOf="parent"に変更します。その結果、次のことができます。

<TextView
        Android:id="@+id/street_name"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_marginStart="15dp"
        Android:text="street name"
        Android:textColor="?AppTheme.InformationText"
        Android:textSize="14sp"
        Android:textStyle="bold"
        Android:gravity="center"
        Android:layout_marginTop="8dp"
        Android:layout_marginRight="8dp"
        Android:layout_marginBottom="19dp"
        Android:layout_marginLeft="0dp"
        app:layout_constraintWidth_default="wrap"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="@+id/guideline29"
        app:layout_constraintTop_toTopOf="@+id/guideline37"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintHorizontal_bias="0.605"
        app:layout_constraintVertical_bias="0.0"/>
0
Eugene Brusov

TextViewを右側に添付するだけで問題ありません。 constraintLayoutを使用して、別のビューまたは親にビューをアタッチする場合、4つの制約すべてを使用する必要があります。

0
Kirill Bitkov