Android MaterialComponents の TextInputEditText の style を指定すると InflateException が発生する
- 2022年03月13日
- Android
- Android, MaterialCompoments, Xamairn
Android の MaterialComponents のテキスト入力欄である TextInputEditText を使う場合です。
静的に生成する場合は簡単で xml ファイルで定義するだけです。このとき TextInputLayout の中に TextInputEditText を入れ子にします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<com.google.android.material.textfield.TextInputLayout android:id="@+id/text_input_layout1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="10dp" android:hint="@string/label" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/edit_text1" android:layout_width="match_parent" android:layout_height="wrap_content" /> </com.google.android.material.textfield.TextInputLayout> |
スタイル
TextInputEditText は通常のスタイルの他に、FilledBix と OutlinedBox というものがあります。
この外観の変更は TextInputLayout に style を適用するだけで実現可能です。
エラーの内容
しかし実行すると以下のエラーが出てしまうことがあります。
1 2 |
Android.Views.InflateException Message=Binary XML file line #2 in jp.example.app:layout/activity_main: Error inflating class com.google.android.material.textfield.TextInputLayout |
解決方法
アプリ全体のテーマが MaterialComponents のものを継承する必要があります。
これまでアプリ全体のテーマを
1 2 3 |
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> |
としいた箇所を
1 2 3 |
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar"> |
のようにする必要があります。
動的に OutlinedBox を生成する場合はさらに注意が必要なのですが別の記事で紹介したいと思います。
ITエンジニア募集中!
キュアコード株式会社はITエンジニアを募集しております。少人数の職場なので、上流・下流やサーバー・クライアント対応の垣根なく、あなたの強みを活かしながら いろいろなことにチャレンジ可能です。エンジニアとしての未経験の方、経験が少ない方も歓迎しています。
下記よりITエンジニア募集の採用情報をご覧いただけます。