2

我需要在应用程序中创建字段编辑页面。有编辑联系人的EditText列表。对于每个字段类型我有一个布局。例如 - 对于名称和姓氏,它是浮动标签的编辑文本。对于脸书 - 用图标简单编辑文字。我与Android的数据创建这个列表绑定库Float标签提示(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

问题是,当没有分配任何东西时,0将作为资源ID给出。你可能会看到这样的异常在你的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

相关问题