我遇到了问题,就是我有一些ViewGroup,它们的内容几乎相同。像这样:
<LinearLayout>
<TextView android:text="aaa"/>
<ImageView android:src="bbb"/>
</LinearLayout>
<LinearLayout>
<TextView android:text="ccc"/>
<ImageView android:src="ddd"/>
</LinearLayout>
我想转换成这个:
<include layout="xxLayout"
param1="aaa"
param2="bbb"/>
<include layout="xxLayout"
param1="ccc"
param2="ddd"/>
xxLayout.xml
<LinearLayout>
<TextView android:text="{param1}"/>
<ImageView android:src="{param2}"/>
</LinearLayout>
我知道我可以使用java代码。可以只使用xml吗?
答案 0 :(得分:1)
您可以使用此
<include
android:id="@+id/banner"
layout="@layout/login_banner" />
banner是包含标记的id,login_banner是您要在XML中膨胀的不同布局
答案 1 :(得分:1)
像这样使用
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/vgroup1"
android:layout_width="match_parent"
android:layout_height="match_parent"
layout="@layout/viewgrup1"" />
<include
android:id="@+id/vgroup2"
layout="@layout/viewgrup2"" />
</LinearLayout>
答案 2 :(得分:1)
您可以将自定义视图组与attibute param1,param2一起使用。包含与您的需求不匹配
答案 3 :(得分:1)
由于数据绑定库,只能使用xml来实现:
首先将xxLayout.xml
包装在布局中,然后添加一个数据绑定类定义,该定义列出了要传递到所包含布局中的变量。
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable name="myText" type="java.lang.String"/>
<variable name="mySrc" type="android.graphics.drawable.Drawable"/>
</data>
<LinearLayout>
<TextView android:text="@{myText}"/>
<ImageView android:src="@{mySrc}"/>
</LinearLayout>
</layout>
然后使用数据绑定库来增加包含的布局,并使用数据绑定语句注入所需的值。有关数据绑定表达式语言及其支持的详细信息,请参见databinding library documentation。
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout>
<include layout="xxLayout"
app:myText="@{`aaa`}"
app:mySrc="@{@drawable/bbb}"/>
<include layout="xxLayout"
app:myText="@{`ccc`}"
app:mySrc="@{@drawable/ddd}"/>
</LinearLayout>
</layout>