Android 仅用于“地图视图”选项卡的按钮显示在两个选项卡上
我有一个两个选项卡的活动,一个选项卡包含一个信息屏幕(下面代码中的id是“targetLayout”)和一些文本视图,另一个选项卡包含一个地图视图。使用该布局,我试图添加一个按钮,该按钮仅显示在MapView选项卡屏幕上,但它同时显示在两个屏幕上。奇怪的是,如果我改变布局,使按钮只在信息选项卡上,那就行了。我肯定错过了什么,但不清楚是什么 以下是导致按钮显示在两个屏幕上的布局:Android 仅用于“地图视图”选项卡的按钮显示在两个选项卡上,android,android-layout,android-mapview,Android,Android Layout,Android Mapview,我有一个两个选项卡的活动,一个选项卡包含一个信息屏幕(下面代码中的id是“targetLayout”)和一些文本视图,另一个选项卡包含一个地图视图。使用该布局,我试图添加一个按钮,该按钮仅显示在MapView选项卡屏幕上,但它同时显示在两个屏幕上。奇怪的是,如果我改变布局,使按钮只在信息选项卡上,那就行了。我肯定错过了什么,但不清楚是什么 以下是导致按钮显示在两个屏幕上的布局: <?xml version="1.0" encoding="utf-8"?> <TabHost xm
<?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>
这里的布局将按钮放在信息选项卡上。唯一不同的是,该按钮现在位于“信息”选项卡的“相对位置”窗口中:
<?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>
此代码是否在屏幕上显示您的选项卡?我总是在不同的文件中显示单独的选项卡视图
MainLayout.xml-包含选项卡主机和框架布局
Tab1.xml-包含选项卡1的布局
Tab2.xml-包含选项卡2的布局
在主活动中的tab select函数上,检查选择了哪个选项卡,并将该xml文件放入MainLaout.xml的框架布局中。查看android tab示例项目了解详细信息。最终找到了解决方案。在我的活动代码中,我在原始问题的布局代码中使用MapView视图id“MapView”填充MapView选项卡。使用包含MapView视图id“mainlayout”的RelativeLayout填充选项卡,使其正常工作。我根据我在网上找到的一个示例编写了原始代码,在您开始尝试像我一样对其进行修饰之前,它运行良好。是的,应用程序活动显示两个选项卡,一个标记为“目标”,另一个标记为“地图”。