ScrollView + TextInputLayout + textMultiLineでレイアウトの組み方

[改訂新版]Android SDKポケットリファレンス (POCKET REFERENCE)

新品価格
¥3,542から
(2018/8/25 15:35時点)


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行の高さになるのでこちらは指定しよう

 

こうして、複数行のEditTextを
TextInputLayoutでラップしてエラーが表示できるようにし
さらにScrollviewでスクロールもできるようにできました

android開発はまだまだ続くよ

関連記事:

Pocket