2

アプリでフィールド編集ページを作成する必要があります。連絡先を編集するためのEditTextのリストがあります。フィールドの種類ごとに私はレイアウトを持っています。例として、名前と姓のために、それは編集テキストと呼ばれる浮動小数点です。 facebookの場合 - アイコンで簡単にテキストを編集します。私はAndroidのデータは、私はレイアウトフロートラベルヒント(TextInputLayout)はAndroidデータバインディングでは機能しません

<data> 

    <variable 
     name="item" 
     type="app.core.db.model.Field" /> 
</data> 

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <android.support.design.widget.TextInputLayout 
     android:layout_width="match_parent" 
     android:layout_height="65dp" 
     app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout" 
     app:theme="@style/EditFieldFloatLabeled"> 

     <EditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ellipsize="end" 
      android:hint="@{item.getHint()}" 
      android:imeOptions="actionNext" 
      android:maxLines="1" /> 
    </android.support.design.widget.TextInputLayout> 

</FrameLayout> 

しかし、フロートラベルではない作品を作成したライブラリ

をバインドして、このリストを作成しています。私は理由を調べるために行ごとにコメントを始めます。フロートラベルは、私がコメントしたときに仕事になりました。

android:hint="@{item.getHint()} 

(ハードコードされたテキストに置き換えてください) getHint()は、フィールドタイプに基づいてR.string.{something}を返します。

私は、ヒントが浮動小数点ラベルが消えるようにプログラムで設定するよりも、わかりました。フィールドリストはダイナミックに増加する可能性があるので(例えば、私はフィールドに電話番号を書いていて、他の電話番号の後ろに空のフィールドフィールドを挿入しているので)、静的レイアウト(リサイクラービューの代わりに)を使用することはできません。

(フィールドタイプでヒントを定義して)同じ方法でフロートラベルを作成する方法はありますか?

答えて

0

何も割り当てられていない場合、リソースIDとして0が与えられるという問題があります。おそらくあなたのlogcatに、このような例外を見ている:

android.content.res.Resources$NotFoundException: String resource ID #0x0 

それはあなたが式の最初の評価の前の項目に値を割り当てていない可能性があります。リソースが値0に設定されていないことを確認したい場合は、バインディングを作成した直後にアイテムを割り当てる必要があります。

MyBinding binding = MyBinding.inflate(inflater, parent, true); 
binding.setItem(item); 
1

私は同じ問題がありました。

解決策は、TextInputLayoutのデータバインディングを使用してヒントを設定しています。

<android.support.design.widget.TextInputLayout 
    android:layout_width="match_parent" 
    android:layout_height="65dp" 
    android:hint="@{item.getHint()}" 
    app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout" 
    app:theme="@style/EditFieldFloatLabeled"> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ellipsize="end" 
     android:imeOptions="actionNext" 
     android:maxLines="1" /> 
</android.support.design.widget.TextInputLayout> 
+0

私のために修正されました。しかし、なぜそれは起こっているのですか? – mitsest

関連する問題