Issue
I've got a 2-tabbed activity, one tab containing an info screen (it's id in the code below is 'targetLayout') with some TextViews and the other tab containing a MapView. Using the layout, I'm trying to add a button that shows just on the MapView tab screen, but it's showing up on both. The odd thing is, if I alter the layout such that the button is on just the info tab, that works. I have to be missing something, but it's not apparent what.
Here's the layout that results in the button showing up on both:
<?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>
And here's the layout that puts the button on just the info tab. The only thing different is that the button is now in the info tab's 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>
Solution
Finally tracked down the solution. In the code for my activity, I was populating the MapView tab using the MapView view, id 'mapview' in the layout code in my original question. Populating the tab using the RelativeLayout that contains the MapView view, id 'mainlayout', made it work correctly. I wrote the original code basing it on an example I found on the net, and it works fine until you start trying to embellish it like I did.
Answered By - John Jorsett
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.