我一直在学习有关合并和修改嵌套的属性包括:最近,我有一个问题,我似乎无法找出答案了。假设我有一个布局定义了一个我想添加到多个布局的头部组件。但是,我想更改每个包含用法的每个标题的标题或图标。例如说我有以下布局:上包括布局
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/menu_header">
<Button android:id="@+id/backButton"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/button"
android:text="@string/back"/>
<TextView style="@style/headerTitle"
android:layout_centerInParent="true"
android:text="${title}"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
</RelativeLayout>
然后我就可以使用包括在其他布局:
<LinearLayout ...>
<include android:id="@+id/searchHeader" layout="@layout/shared_header" title="Search"/>
...
</LinearLayout>
我知道我可以修改任何layout_ *根元素的属性,但我定义其他属性来代替布局,比如在这个例子中说“title”,而不必创建我自己的View子类,在valaues /资源中添加declare-styleable定义等等?
有这样的事情会使得创建可重用的意见,以便更简单,但我似乎无法找到任何证据说,如果合并+包括可以做到这一点。
我有种想,如果你想改变这些意见的内容,你应该利用由这些意见的自定义视图。当你想在其他地方复制/粘贴一个视图/视图组时,包含的东西更多。 – Gregory
但是,如果您只能复制和粘贴完全相同的代码,则包含的用途有限。自定义视图需要更多的开销作者,添加自定义样式选项,创建代码的子类视图等。如果我做的是调整嵌套元素的某些属性,好像可以做,没有吃整个大象 – chubbsondubs
我再次阅读了关于include的快速“教程”(http://android-developers.blogspot.com/2009/02/android-layout-tricks-2-reusing-layouts.html),看起来很清楚,它只是意思是简单的复制/粘贴,特别是当你在2种不同的布局(纵向和横向)中包含一个共同的“子布局”时。尽管我确实发现你的想法非常酷:/ – Gregory