我已经尝试了几天,通过将多层嵌套转换LinearLayouts
为一层RelativeLayout
来提高布局效率,遇到了一些我无法找到解决方法的问题。
我搜索了Android初学者组和此站点,但找不到任何可以帮助我解决问题的内容。
我读过一篇博客,您可以将布局与merge和include标签结合使用。所以我有一个带有RelativeLayout
根元素的主布局文件。在其中,我有5个include标记,它们引用5个不同的xml布局文件,每个文件的根都有一个merge元素(我的所有合并文件都是相同的,除了其中的id)。
我遇到两个问题,在发布布局代码的简化版本后,我将对其进行解释:
示例主布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/translucent_gray" >
<include
android:id="@+id/running_gallery_layout_id"
layout="@layout/running_gallery_layout" />
<include
android:id="@+id/recent_gallery_layout_id"
layout="@layout/recent_gallery_layout"
android:layout_below="@id/running_gallery_layout_id" />
<include
android:id="@+id/service_gallery_layout_id"
layout="@layout/service_gallery_layout"
android:layout_below="@id/recent_gallery_layout_id" />
<include
android:id="@+id/process_gallery_layout_id"
layout="@layout/process_gallery_layout"
android:layout_below="@id/service_gallery_layout_id" />
</RelativeLayout>
样本包含的合并文件:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
style="@style/TitleText"
android:id="@+id/service_gallery_title_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text="@string/service_title" />
<Gallery
android:id="@+id/service_gallery_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_below="@id/service_gallery_title_text_id" />
<TextView
style="@style/SubTitleText"
android:id="@+id/service_gallery_current_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/service_gallery_title_text_id"
android:layout_above="@id/service_gallery_id" />
</merge>
我遇到两个问题:
1)android:layout_*
当在include标记中使用属性时,这些属性似乎被忽略,并且所有合并的布局都显示在彼此的顶部。根据这篇文章(http://developer.android.com/resources/articles/layout-tricks-reuse.html),“任何android:layout_*
属性都可以与<include />
标签一起使用”
2)由于无法正常工作,我决定尝试向每个合并布局文件中android:layout_below
的第一TextView
项添加一个属性,这意味着每个合并文件都将引用另一个合并布局文件中的ID。实际工作,我的布局看起来还不错。但是,我对其中一个android:layout_below
属性说了一个错误,说它找不到我指定的ID。我对ID进行了两次和三次检查,以确保它们是正确的。最奇怪的部分是,我首先使用该AutoFill
功能将id放在属性中。
如果有人有任何建议或解决方法,我将非常乐意尝试。此外,如果有人能想到一种让我拥有一个合并xml布局文件而不是5个合并xml布局文件的方法,将不胜感激。我找不到方法,因为我需要在运行时访问合并布局文件中的每个项目。