我有一个 XML 布局,它有一个谷歌地图、两个文本视图和一个相对布局的按钮。文本视图位于谷歌地图下方,当用户在地图上移动光标时,文本值“纬度:”和“经度:”更新为“纬度:xxx”和“经度”xxx”。提交按钮说“提交”并做到这一点,它将纬度/经度打包到一个意图中并将其传递给下一个活动。
这一切都很好,直到我开始弄乱布局。我注意到,因为我一直在 eclipse 中懒惰地使用图形设计工具,所以所有东西都有设置尺寸,这意味着在更大的屏幕上它看起来很傻。
我添加了另一个相对布局并将纬度/经度文本和提交按钮放入其中,并将新布局放置在另一个现在只有 MapView 的相对布局下。
我的意图是使用 android:layout_weight 将底部相对布局分配在底部屏幕的 15% 左右,而屏幕的其余部分将是谷歌地图。
物理尺寸很好。但是,如果我的 textviews 完全依赖于提交按钮(android:layout_above/below),则提交按钮的文本将采用依赖于它的 textview 的值并得到更新,而 textview 将停留在“lat /long:" 并且不会更新。
我目前在相对布局的顶部设置了文本视图,在底部设置了独立的提交按钮,它工作正常。我只是好奇到底发生了什么。
这是我的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="80" >
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="xxx"
android:clickable="true"
android:enabled="true" >
</com.google.android.maps.MapView>
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="20" >
<TextView
android:id="@+id/Latitude"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Latitude:" />
<TextView
android:id="@+id/Longitude"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/Latitude"
android:text="Longitude:" />
<Button
android:id="@+id/submitbutton"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:onClick="GOTOUPLOADER"
android:text="Submit" />
</RelativeLayout>
这是唯一(我认为)适用于此 xml 文件的相关代码。请注意,我没有对此处的按钮文本做任何事情。它甚至不是这个类的一个属性。按钮与此类的唯一交互是它在单击时调用一个方法来启动另一个活动。
//setupmap()instantiates mapview and centers on the given location
public void setupmap()
{
getcoords();//setup coordinates
lattext.setText("Latitude: "+String.valueOf(Lat));
lontext.setText("Longitude: "+String.valueOf(Long));
mapView = (MapView) findViewById(R.id.mapView);//instantiate mapview
mapView.setBuiltInZoomControls(true);//able to zoom
mcontrol = mapView.getController();//mapcontroller contains methods to manipulate mapview
mcontrol.animateTo(point);//zoom to our geopoint
mcontrol.setZoom(19);//zoom level 1-21. 1=world view, 21=as zoomed in as possible
MyOverlay over = new MyOverlay();//instantiate overlay
listofoverlays = mapView.getOverlays();//create a list of overlays
listofoverlays.clear();//clear list
listofoverlays.add(over);//add our overlay
mapView.invalidate();//invalidate for changes to take effect
}//setupmap
请原谅所有的评论。