Android - 包括自定义组件使其隐藏在主视图后面

时间:2009-10-29 20:46:13

标签: java android user-interface layout

我正在使用的应用程序有4个选项卡,其中3个共享许多功能,包括导航栏,底部带有“后退”,“编辑”和“地图”按钮。在所有3个布局中完全相同的xml,所以我试图通过将xml提取到一个单独的组件(包括它,然后从那里开始)来干掉它。

以前我有

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_height="fill_parent"
                android:layout_width="fill_parent">

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                        android:id="@+id/showedit_toolbar"
                        style="@style/showItemToolbar">

            <ImageButton android:id="@+id/show_person_back_button"
                    style="@style/blackToolbarButton"
                    android:src="@drawable/left_white_arrow"
                    android:layout_alignParentLeft="true"/>

            <Button android:id="@+id/show_person_map_button"
                    style="@style/blackToolbarButton"
                    android:text="map"
                    android:layout_alignParentRight="true"/>

            <Button android:id="@+id/show_person_edit_button"
                    style="@style/blackToolbarButton"
                    android:text="edit"
                    android:layout_toLeftOf="@id/show_person_map_button"/>                          
        </RelativeLayout>

        <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_height="fill_parent" 
            android:layout_width="fill_parent"           
            android:layout_above="@id/showedit_toolbar"
            style="@style/CoinLightTheme">

// Lots more layout omitted

我将重复的位提取到名为show_toolbar.xml的xml文件中,更改变量名称以使其在3个视图中更通用

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/show_toolbar"
    style="@style/showItemToolbar">

    <ImageButton style="@style/blackToolbarButton"
        android:src="@drawable/left_white_arrow"
        android:layout_alignParentLeft="true" 
        android:id="@+id/show_back_button"/>

    <Button android:id="@+id/show_map_button"
        style="@style/blackToolbarButton"
        android:text="map"
        android:layout_alignParentRight="true"/>

    <Button android:id="@+id/show_edit_button"
        style="@style/blackToolbarButton"
        android:text="edit"
        android:layout_toLeftOf="@id/show_map_button"/>                         

</RelativeLayout>

然后,在我的原始布局文件中,我用

替换了那一大块代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_height="fill_parent"
                android:layout_width="fill_parent">

    <include android:id="@+id/show_toolbar" layout="@layout/show_toolbar"/>

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent"
        android:layout_above="@id/showedit_toolbar"         
        style="@style/CoinLightTheme">

现在,问题在于视图不再显示。我仍然可以点击按钮然后他们回复(即如果我点击按钮所在的角落,它仍然有效),但我看不到他们被绘制的按钮或栏。

我找不到关于Include如何工作的非常好的文档,所以也许我错误地使用它。任何帮助将不胜感激

Before http://i34.tinypic.com/2dl0hm1.png

After

1 个答案:

答案 0 :(得分:1)

RelativeLayout支持小部件的垂直堆叠。根据您的布局,您的“工具栏”将隐藏在ScrollView,AFAICT后面。如果您不想要这种行为,请调整布局,使其不重叠。