ConstraintLayout
レイアウトがあります:
<Android.support.constraint.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">
<Button
Android:id="@+id/button10"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:ellipsize="end"
Android:singleLine="true"
Android:text="small text"
app:layout_constraintLeft_toLeftOf="parent"/>
<Button
Android:ellipsize="end"
Android:singleLine="true"
Android:id="@+id/button11"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="small text"
app:layout_constraintRight_toRightOf="parent"/>
</Android.support.constraint.ConstraintLayout>
次のように表示されます: 今は大丈夫ですが、私が変更した場合Android:text="small text"
からAndroid:text="big teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeext"
の場合、ビューは互いにオーバーラップします。
上のスクリーンショットで実際に行ったように、小さなテキストでは「コンテンツの折り返し」があることを確認する必要がありますが、より大きなテキストでは、テキストビューは親の水平方向に最大約40%を占める必要があります。まあテキストが転送されなかったことも-私はAndroid: ellipsize =" end "
およびAndroid: singleLine =" true
。
これは、次のようにする必要があります(デモ用にPhotoshopで編集): ConstraintLayoutでこれをどのように行うか、またはできない場合-他のレイアウトで?
以下の例のように、Guidelineおよびlayout_constraintWidth_defaultプロパティを使用してそれを行うこともできます
<?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="match_parent"
tools:showIn="@layout/activity_home">
<Button
Android:id="@+id/button10"
Android:layout_width="0dp"
app:layout_constraintWidth_default="wrap"
Android:layout_height="wrap_content"
Android:ellipsize="end"
Android:singleLine="true"
Android:text="sdtessdsdsdsdsdsdsdsddsdsdxt"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
Android:layout_marginLeft="0dp"
app:layout_constraintHorizontal_bias="0"
Android:layout_marginTop="8dp"
app:layout_constraintRight_toLeftOf="@+id/guideline"
Android:layout_marginRight="8dp" />
<Button
Android:ellipsize="end"
Android:singleLine="true"
Android:id="@+id/button11"
Android:layout_width="0dp"
app:layout_constraintWidth_default="wrap"
Android:layout_height="wrap_content"
Android:text="ddddddsdssdsdsdsdsdsdddt"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
Android:layout_marginTop="8dp"
Android:layout_marginRight="-1dp"
Android:layout_marginLeft="8dp"
app:layout_constraintHorizontal_bias="1"
app:layout_constraintLeft_toLeftOf="@+id/guideline" />
<Android.support.constraint.Guideline
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/guideline"
Android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
</Android.support.constraint.ConstraintLayout>
あなたはこのようにすることができます:
<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="match_parent">
<Button
Android:id="@+id/button10"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_marginTop="30dp"
Android:ellipsize="end"
Android:maxLines="1"
Android:gravity="center_vertical"
Android:text="small text"
Android:layout_marginRight="20dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/button11"
app:layout_constraintTop_toTopOf="parent" />
<Button
Android:id="@+id/button11"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:ellipsize="end"
Android:maxLines="1"
Android:layout_marginLeft="20dp"
Android:gravity="center_vertical"
Android:text="small textsfdgdfjkghkdfhgjkdfhgkhgkhkjjkgfkgjkfgjkgjkjgfdkj"
app:layout_constraintLeft_toRightOf="@+id/button10"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@+id/button10" />
次の属性が機能します。
app:layout_constrainedWidth="true"
https://developer.Android.com/reference/Android/support/constraint/ConstraintLayout
WRAP_CONTENT:制約の適用(1.1で追加)ディメンションがWRAP_CONTENTに設定されている場合、1.1より前のバージョンでは、リテラルディメンションとして扱われます。つまり、制約によって結果のディメンションが制限されません。一般的にはこれで十分(かつ高速)ですが、状況によっては、WRAP_CONTENTを使用したいが、結果のディメンションを制限するために制約を適用し続ける場合があります。その場合、対応する属性の1つを追加できます。
app:layout_constrainedWidth =” true | false” app:layout_constrainedHeight =” true | false”
拘束が左/右からの場合
set vertical guideline
set component layout_width = 0dp
制約が上/下からの場合
set horizontal guideline
set component layout_height = 0dp