自定义标题栏不会超过Android中的TabHost

时间:2013-12-11 10:19:19

标签: android android-custom-view

我正在尝试在Tabhost上方设置自定义栏。但它不会来。我不想使用“requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);”原因是我想在我的所有屏幕中使用相同的代码。除了这个有tabhost的屏幕之外,在所有其他屏幕中它都是完美的。任何原因 ?

TitleBar的代码:

<RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/windowtitle"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:background="#0a2436"
                android:gravity="center_horizontal|center_vertical"
                android:paddingBottom="10dip"
                android:paddingTop="10dip"
                android:src="@drawable/logo">
            </ImageView>

            <ImageButton
                android:id="@+id/syncbutton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_marginTop="3dip"
                android:background="@android:color/transparent"
                android:src="@drawable/sync" 
                android:gravity="center"
                android:text="Sync" />
        </RelativeLayout>

完整代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/formLayout"
    android:layout_width="fill_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/windowtitle"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="#0a2436"
            android:gravity="center_horizontal|center_vertical"
            android:paddingBottom="10dip"
            android:paddingTop="10dip"
            android:src="@drawable/logo">
        </ImageView>

        <ImageButton
            android:id="@+id/syncbutton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginTop="3dip"
            android:background="@android:color/transparent"
            android:src="@drawable/sync" 
            android:gravity="center"
            android:text="Sync" />
    </RelativeLayout>

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="0dp" >

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true" />

            <View
                android:id="@+id/separator"
                android:layout_width="fill_parent"
                android:layout_height="2dip"
                android:layout_below="@android:id/tabs" />

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_above="@+id/btnSend"
                android:layout_below="@+id/separator"
                android:paddingBottom="45dip" >

                <!-- Scrollview for message data -->

                <ScrollView
                    android:id="@+id/formTab"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:scrollbars="vertical" >

                    <LinearLayout
                        android:id="@+id/formLayout"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:orientation="vertical" >

                        <View
                            android:layout_width="fill_parent"
                            android:layout_height="5dip" />
                    </LinearLayout>
                </ScrollView>
            </FrameLayout>
        </RelativeLayout>
    </TabHost>

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerInParent="true"
        android:gravity="bottom"
        android:stretchColumns="*" >

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal" >

            <Button
                android:id="@+id/home"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:background="#092435"
                android:gravity="center"
                android:padding="15dip"
                android:text="Activity"
                android:textColor="#ffffff" />

            <Button
                android:id="@+id/status"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:background="#092435"
                android:gravity="center"
                android:padding="15dip"
                android:text="Support"
                android:textColor="#ffffff" />

            <Button
                android:id="@+id/support"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:background="#092435"
                android:gravity="center"
                android:padding="15dip"
                android:text="Messages"
                android:textColor="#ffffff" />
        </TableRow>
    </TableLayout>

</RelativeLayout>

此致

2 个答案:

答案 0 :(得分:1)

将布局更改为此...因为您需要将tabhost与标题布局相关联

android:layout_below属性添加到tabhost

<RelativeLayout
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/windowtitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="#0a2436"
        android:gravity="center_horizontal|center_vertical"
        android:paddingBottom="10dip"
        android:paddingTop="10dip"
        android:src="@drawable/ic_launcher" >
    </ImageView>

    <ImageButton
        android:id="@+id/syncbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginTop="3dip"
        android:background="@android:color/transparent"
        android:gravity="center"
        android:src="@drawable/ic_launcher"
        android:text="Sync" />
</RelativeLayout>

<TabHost
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/title" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="0dp" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true" />

        <View
            android:id="@+id/separator"
            android:layout_width="fill_parent"
            android:layout_height="2dip"
            android:layout_below="@android:id/tabs" />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_above="@+id/btnSend"
            android:layout_below="@+id/separator"
            android:paddingBottom="45dip" >

            <!-- Scrollview for message data -->

            <ScrollView
                android:id="@+id/formTab"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:scrollbars="vertical" >

                <LinearLayout
                    android:id="@+id/formLayout"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" >

                    <View
                        android:layout_width="fill_parent"
                        android:layout_height="5dip" />
                </LinearLayout>
            </ScrollView>
        </FrameLayout>
    </RelativeLayout>
</TabHost>

<TableLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerInParent="true"
    android:gravity="bottom"
    android:stretchColumns="*" >

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" >

        <Button
            android:id="@+id/home"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="#092435"
            android:gravity="center"
            android:padding="15dip"
            android:text="Activity"
            android:textColor="#ffffff" />

        <Button
            android:id="@+id/status"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="#092435"
            android:gravity="center"
            android:padding="15dip"
            android:text="Support"
            android:textColor="#ffffff" />

        <Button
            android:id="@+id/support"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="#092435"
            android:gravity="center"
            android:padding="15dip"
            android:text="Messages"
            android:textColor="#ffffff" />
    </TableRow>
</TableLayout>

</RelativeLayout>

答案 1 :(得分:0)

尝试设置与布局的对齐方式:

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="vertical">  

    <!-- use an id -->
    <!-- set alignParentTop to true -->
    <RelativeLayout
        android:id="@+id/topContainer"         
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal"  
        android:layout_alignParentTop="true"> 

        ...

    </RelativeLayout> 

    <!-- set it to wrap_content -->
    <!-- set align below to first element -->
    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"     
        android:layout_below="@id/topContainer"> 

        ...

    </TabHost>  

    <!-- set it to center horizontal -->
    <!-- set align below to tabhost -->
    <!-- set it to the bottom of your layout -->
    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="*" 
        android:layout_centerHorizontal="true"   
        android:layout_below="@id/tabhost"       
        android:layout_alignParentBottom="true"> 

        ...

    </TableLayout>  

</RelativeLayout>

希望这会有所帮助。