[改訂新版]Android SDKポケットリファレンス (POCKET REFERENCE) 新品価格 |
ScrollViewの中に
TextInputLayoutを入れて
AppCompatEditTextのtextMultiLineを記載する
そんな感じでレイアウトの組み方
・必要になった理由
画面がでかくなるのでscrollviewが必須
EditTextはエラーを出したい
さらに入力フォームは複数行可能にしたい
こんなレイアウトを組みたいとき
・NestedScrollView
最初にやろうとしたのは
ScrollViewの中にある
AppCompatEditTextを別のスクロール対象にしようとした
その場合は以下のように、NestedScrollViewで実現できる
https://qiita.com/noboru_i/items/09e7d3f8f222834378cc
と思いきや、TextInputLayoutがあるとうまくスクロールできない
こういうUIが望みならTextInputLayoutをやめて
NestedScrollView + EditTextのtextMultiLineにするしかない
必然的にエラー表示を諦めるか自作するしかない
・代替案
実装してる途中で
スクロールなしでも改行するたびにAppCompatEditTextの高さが大きくなれば良いと気づいた
その方法は以下。
このときの注意点はmaxLinesもmaxHeightも指定してはいけない
だって高さ未定だもん
さらに、minHeightを指定しないと1行の高さになるのでこちらは指定しよう
1 2 3 4 5 6 7 8 9 10 11 12 |
<android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:errorEnabled="true"> <android.support.v7.widget.AppCompatEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="ヒント" android:inputType="textMultiLine" android:minHeight="100dp" /> </android.support.design.widget.TextInputLayout> |
こうして、複数行のEditTextを
TextInputLayoutでラップしてエラーが表示できるようにし
さらにScrollviewでスクロールもできるようにできました
android開発はまだまだ続くよ
関連記事:
- AppCompatEditTextにbackgroundを当ててはいけない
- androidでDataBinding + ViewModel + LiveDataを使ってみた
- androidでDataBinding + ViewModel + LiveDataで双方向Bindingしてみた