0

我有一个 2 选项卡活动,一个选项卡包含一个信息屏幕(它在下面的代码中的 id 是“targetLayout”)和一些 TextViews,另一个选项卡包含一个 MapView。使用布局,我正在尝试添加一个仅显示在 MapView 选项卡屏幕上的按钮,但它同时显示在两者上。奇怪的是,如果我改变布局,使按钮只在信息选项卡上,那是可行的。我必须错过一些东西,但不清楚是什么。

这是导致按钮显示在两者上的布局:

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

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

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

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <RelativeLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:id="@+id/targetLayout"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >

                <TextView
                    android:id="@+id/textViewTargetPositionLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:text="Target Position"
                    android:textAppearance="?android:attr/textAppearanceLarge" />

                <TextView
                    android:id="@+id/textViewTargetPosition"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/textViewTargetPositionLabel"
                    android:layout_centerHorizontal="true"
                    android:text="Waiting"
                    android:textAppearance="?android:attr/textAppearanceLarge" />

                <TextView
                    android:id="@+id/textViewTargetRangeLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/textViewTargetPosition"
                    android:layout_marginTop="10dp"
                    android:text="Range(M):"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/textViewTargetAzimuthLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/textViewTargetRangeLabel"
                    android:text="Azimuth(Deg):"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/textViewTargetElevationLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/textViewTargetAzimuthLabel"
                    android:text="Elevation(Deg):"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/textViewTargetTimeLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/textViewTargetElevationLabel"
                    android:text="Time lased:"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/textViewGPSAccuracy"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/textViewTargetTimeLabel"
                    android:text="GPS Accuracy When Lased:"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/textViewYourPositionLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/textViewGPSAccuracy"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="20dp"
                    android:text="Your Position"
                    android:textAppearance="?android:attr/textAppearanceLarge" />

                <TextView
                    android:id="@+id/textViewYourPosition"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/textViewYourPositionLabel"
                    android:layout_centerHorizontal="true"
                    android:text="Waiting for GPS Fix"
                    android:textAppearance="?android:attr/textAppearanceLarge" />

                <TextView
                    android:id="@+id/textViewGPSStatus"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/textViewYourPosition"
                    android:layout_marginTop="14dp"
                    android:text="GPS Status: Initializing" />

                <TextView
                    android:id="@+id/textViewGPSInfo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignBaseline="@+id/textViewGPSStatus"
                    android:layout_alignBottom="@+id/textViewGPSStatus"
                    android:layout_alignParentRight="true" />
            </RelativeLayout>

            <RelativeLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/mainlayout"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical" >

                <com.google.android.maps.MapView
                    android:id="@+id/mapview"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:apiKey="<my key is in here>"
                    android:clickable="true"
                    android:enabled="true" />

                <Button
                    android:id="@+id/googlemaps_select_location"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_alignParentTop="true"
                    android:text="Select" />
            </RelativeLayout>
        </FrameLayout>
    </LinearLayout>

</TabHost>

这是将按钮仅放在信息选项卡上的布局。唯一不同的是该按钮现在位于信息选项卡的 RelativeLayout 中:

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

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

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

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <RelativeLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:id="@+id/targetLayout"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >

                <TextView
                    android:id="@+id/textViewTargetPositionLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:text="Target Position"
                    android:textAppearance="?android:attr/textAppearanceLarge" />

                <TextView
                    android:id="@+id/textViewTargetPosition"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/textViewTargetPositionLabel"
                    android:layout_centerHorizontal="true"
                    android:text="Waiting"
                    android:textAppearance="?android:attr/textAppearanceLarge" />

                <TextView
                    android:id="@+id/textViewTargetRangeLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/textViewTargetPosition"
                    android:layout_marginTop="10dp"
                    android:text="Range(M):"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/textViewTargetAzimuthLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/textViewTargetRangeLabel"
                    android:text="Azimuth(Deg):"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/textViewTargetElevationLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/textViewTargetAzimuthLabel"
                    android:text="Elevation(Deg):"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/textViewTargetTimeLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/textViewTargetElevationLabel"
                    android:text="Time lased:"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/textViewGPSAccuracy"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/textViewTargetTimeLabel"
                    android:text="GPS Accuracy When Lased:"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/textViewYourPositionLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/textViewGPSAccuracy"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="20dp"
                    android:text="Your Position"
                    android:textAppearance="?android:attr/textAppearanceLarge" />

                <TextView
                    android:id="@+id/textViewYourPosition"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/textViewYourPositionLabel"
                    android:layout_centerHorizontal="true"
                    android:text="Waiting for GPS Fix"
                    android:textAppearance="?android:attr/textAppearanceLarge" />

                <TextView
                    android:id="@+id/textViewGPSStatus"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_below="@+id/textViewYourPosition"
                    android:layout_marginTop="14dp"
                    android:text="GPS Status: Initializing" />

                <TextView
                    android:id="@+id/textViewGPSInfo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignBaseline="@+id/textViewGPSStatus"
                    android:layout_alignBottom="@+id/textViewGPSStatus"
                    android:layout_alignParentRight="true" />

                <Button
                    android:id="@+id/googlemaps_select_location"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_alignParentTop="true"
                    android:text="Select" />
            </RelativeLayout>

            <RelativeLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/mainlayout"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical" >

                <com.google.android.maps.MapView
                    android:id="@+id/mapview"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:apiKey="my key is in here"
                    android:clickable="true"
                    android:enabled="true" />
            </RelativeLayout>
        </FrameLayout>
    </LinearLayout>

</TabHost>
4

3 回答 3

0

此代码是否在屏幕上显示您的标签?

于 2012-09-21T04:42:24.517 回答
0

我一直在不同的文件中有单独的选项卡视图。

MainLayout.xml - 包含选项卡主机和框架布局。

Tab1.xml - 包含选项卡 1 的布局

Tab2.xml - 包含选项卡 2 的布局

在主活动中的选项卡选择功能上,您检查以查看选择了哪个选项卡并将该 xml 文件放入 MainLaout.xml 的框架布局中。查看 android 选项卡示例项目以获取详细信息。

于 2012-09-21T05:52:22.983 回答
0

终于找到了解决办法。在我的活动代码中,我在原始问题的布局代码中使用 MapView 视图填充 MapView 选项卡,id 为“mapview”。使用包含 MapView 视图 id 'mainlayout' 的 RelativeLayout 填充选项卡,使其正常工作。我根据我在网上找到的一个示例编写了原始代码,它工作正常,直到你开始像我一样尝试修饰它。

于 2012-09-25T01:34:58.050 回答