前提・実現したいこと
ImageView と TextView だけのシンプルなレイアウトです。
TextView は parent の中央に配置します。
ImageView は TextView の左に配置します。
TextViewは1行のみ、長い場合は「...」で省略します。
以下のようなレイアウトを作成し、いったんはうまくいきました。
XML
1<?xml version="1.0" encoding="utf-8"?> 2<layout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools"> 5 6 <data> 7 8 <variable 9 name="textString" 10 type="String" /> 11 </data> 12 13 <androidx.constraintlayout.widget.ConstraintLayout 14 android:layout_width="match_parent" 15 android:layout_height="match_parent" 16 tools:context=".MainActivity"> 17 18 <ImageView 19 android:id="@+id/imageView" 20 android:layout_width="wrap_content" 21 android:layout_height="wrap_content" 22 android:layout_marginStart="12dp" 23 app:layout_constraintBottom_toBottomOf="parent" 24 app:layout_constraintStart_toStartOf="parent" 25 app:layout_constraintTop_toTopOf="parent" 26 app:srcCompat="@android:drawable/btn_star_big_on" 27 tools:layout_editor_absoluteX="13dp" 28 tools:layout_editor_absoluteY="18dp" /> 29 30 <TextView 31 android:layout_width="wrap_content" 32 android:layout_height="wrap_content" 33 android:layout_marginStart="12dp" 34 android:layout_marginEnd="12dp" 35 android:ellipsize="end" 36 android:maxLines="1" 37 android:text="@{textString}" 38 app:layout_constraintBottom_toBottomOf="parent" 39 app:layout_constraintEnd_toEndOf="parent" 40 app:layout_constraintStart_toStartOf="parent" 41 app:layout_constraintTop_toTopOf="parent" 42 tools:text="センタリング" /> 43 44 </androidx.constraintlayout.widget.ConstraintLayout> 45</layout>
発生している問題、試したこと
TextView に設定する文字列が長い場合、左に設置した ImageView と TextViewが重なってしまいます。
そのため、TextView を app:layout_constraintStart_toStartOf="parent"
としていたのを
app:layout_constraintStart_toEndOf="@id/imageView"
としたところ、文字列が長くてもImageViewとは重ならなくなりました。
しかしながら、これでは文字列が短い場合に、親の中央ではなく、ImageViewのサイズ分 右にずれてしまいます。
Barrier
を使って、textViewのstart位置を parentや barrierにしてみましたが、結果変わらずでした。
右にImageViewと同じサイズのViewを設置し、その中でセンタリングすれば中央に表示されますが、今回 TextView は右端(マージンはありますが)まで伸ばしたいのです。
知りたいこと
TextViewは親のセンターに設置しつつ、文字列が長くなった場合は左に設置したViewに重ならないようにするにはどうすればいいでしょうか。
XMLだけでは無理でしょうか。
補足情報(FW/ツールのバージョンなど)
Android Stduio 3.6
targetSdkVersion 29
constraintlayout:1.1.3
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/23 03:33