Bre*_*ett 1 java data-binding layout android
我有XML布局代码:
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<data>
<variable name="info" type="com.mycompany.orm.binders.MyBinderObject"/>
</data>
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="15dp"
android:paddingBottom="15dp"
android:gravity="end">
...
Run Code Online (Sandbox Code Playgroud)
这很有效.但是,我MyBinderObject调用了一个属性mygravity,并将其设置为两个字符串之一:start或end.我试图找出如何读取数据绑定属性mygravity以将重力分配给布局.
即,android:gravity="@{info.mygravity}"(但是,这行不起作用.编译时数据绑定代码失败).
有没有人知道如何android:gravity基于数据绑定对象属性动态设置?
我在MyBinderObject中有一个名为mygravity的属性,它被设置为两个字符串之一:start或end.
其中存在的问题是:你正在做一些合理的事情并将布局XML视为XML.
布局XML属性值可以是各种类型.有时,这很明显,例如android:enabled="false"或android:layout_width="30sp".并且,有时,类型实际上是字符串或字符串资源引用(例如,android:text="Foo").但有时属性值看起来像英语字符串,但它实际上是一组枚举值(例如,重力值)之一.
我没有意识到引力实际上是一个枚举属性
根据经验,粗切规则:如果你翻译的价值成另一种语言的生成会失败,那么它是一个枚举属性(例如,android:gravity="fin"而不是android:gravity="end",假设谷歌翻译给我合理的西班牙语那里...).如果翻译的值可以正常工作,那么它是任何有效的字符串或(通常)字符串资源.
我试图找出如何读取数据绑定属性mygravity以将重力分配给布局.
你必须将字符串值变换为等效的Gravity常量Gravity.START.
| 归档时间: |
|
| 查看次数: |
1780 次 |
| 最近记录: |