読者です 読者をやめる 読者になる 読者になる

ConstraintLayoutでTextViewのWidthをAnySizeにしたら文字が欠けてしまう問題(constraint-layout:1.0.0-alpha4)

解決法

com.android.support.constraint:constraint-layout1.0.0-alpha5 以上のものを使う

compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha5'

環境

  • AndroidStudio 2.2 Preview 6
  • com.android.tools.build:gradle:2.2.0-alpha6
  • com.android.support.constraint:constraint-layout:1.0.0-alpha4

問題

AndroidStudio 2.2 previewから新しく追加されたConstraintLayoutを使っていて、TextViewのWidthを中のTextによって可変 + 折り返して欲しかったのに文字が欠けてしまっていた

構成的にはこんな感じ

f:id:henteko07:20160817161111p:plain

<TextView
    android:text="hogehogehogehogehogehgoehogehgoehgoehgoeghoe"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:id="@+id/textView"
    android:textSize="18sp"
    android:scrollHorizontally="true"
    app:layout_constraintLeft_toRightOf="@+id/imageView"
    android:layout_marginLeft="8dp"
    android:layout_marginStart="8dp"
    app:layout_constraintTop_toBottomOf="@+id/textView"
    android:layout_marginTop="8dp"
    app:layout_constraintRight_toRightOf="@+id/comment_item"
    android:layout_marginRight="16dp"
    android:layout_marginEnd="16dp"
    app:layout_constraintBottom_toBottomOf="@+id/comment_item"
    android:layout_marginBottom="16dp"
    app:layout_constraintHorizontal_bias="0.0" />

これを実行すると、以下のように右端の文字が欠けてしまう

f:id:henteko07:20160817161118p:plain

原因と解決法

com.android.support.constraint:constraint-layout:1.0.0-alpha4 のバグらしい
1.0.0-alpha5 で修正されたのでそちらを使う

現時点(2016/8/17)では 1.0.0-alpha7 が最新なのでそれを使ったら正しく表示された

compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'

f:id:henteko07:20160817161129p:plain

余談

ConstraintLayoutなどのAndroidSDK付属のtoolはgradleのdependenciesに書くだけではダウンロードされない
AndroidStudioのSDK Managerを開き、SDK Toolsタブで別途updateすると使えるようになる
ややこしいなこれ

f:id:henteko07:20160817161140p:plain f:id:henteko07:20160817161150p:plain

参考

http://stackoverflow.com/questions/38393954/wrong-textview-display-in-constraintlayout-when-anysize http://stackoverflow.com/questions/37992187/gradle-sync-failed-could-not-find-constraint-layout1-0-0-alpha2