标签:android android-databinding
我创建了包含图像和标题的自定义布局.要重复使用此布局,我正在使用< include>标签.问题是我甚至无法将字符串文字绑定到包含的布局中.我试图遵循这些instructions,但没有成功.
布局/ titlebar.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="title" type="String"/>
<!-- <variable name="imgSrc" type="android.graphics.drawable.Drawable" /> -->
</data>
<LinearLayout ... >
<!-- <ImageView ... android:src="{imgSrc}" /> -->
<TextView ... android:text="@{title, default=DefaultTitle}" />
</LinearLayout>
</layout>
布局/ otherlayout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto"
...
>
<!-- bind:imgSrc="@{@drawable/some_image}" -->
<include layout="@layout/titlebar"
bind:title="@{Example}" <---------- does not work
/>
...
</LinearLayout>
在gradle中,我为模块启用了数据绑定:
android {
...
dataBinding {
enabled = true
}
...
}
解决方法:
修复了基于@CzarMatt答案的layout / otherlayout.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
layout with bindings has to be wrapped in <layout> tag so {LayoutName}Bindings
class can be auto-generated for binding purposes
xmlns:alias="http://schemas.android.com/apk/res-auto"
creates an "app namespace" for custom attributes
-->
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<LinearLayout ... >
<!--
// if this layout is also using title "data variable"
// and we want to use default value if title is null
bind:title='@{title ?? "Settings"}
// passing literal reference into the binding
bind:title="@{@string/settings_constant}"
-->
<include layout="@layout/titlebar"
bind:title='@{"Settings"}'
/>
...
</LinearLayout>
</layout>
数据绑定需要通过DataBindingUtil设置布局,如@RaviRupareliya建议的那样,否则数据绑定将不起作用:
public class OtherActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.otherlayout);
DataBindingUtil.setContentView(this, R.layout.otherlayout);
}
...
}
标签:android,android-databinding 来源: https://codeday.me/bug/20190608/1196732.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。