gpt4 book ai didi

java - Android XML 布局错误

转载 作者:行者123 更新时间:2023-12-01 15:20:57 25 4
gpt4 key购买 nike

我有一个 XML 布局,其中有一个谷歌地图、两个 TextView 和一个相对布局中的按钮。 TextView 位于谷歌地图下方,当用户在 map 上移动光标时,文本值“纬度:”和“经度:”会更新为“纬度:xxx”和“经度”xxx。提交按钮显示“提交”并执行此操作,它将纬度/经度打包在一个 Intent 中并将其传递到下一个 Activity 。

一切都很好,直到我开始搞乱布局。我注意到,因为我一直懒洋洋地使用 Eclipse 中的图形设计工具,所以所有内容都已设定尺寸,这意味着在更大的屏幕上它看起来很愚蠢。

我添加了另一个相对布局,并将纬度/经度文本和提交按钮放入其中,并将新布局放置在现在只有 MapView 的另一个相对布局下。

我的 Intent 是使用 android:layout_weight 分配底部相对布局大约 15% 左右的屏幕在底部,屏幕的其余部分将是谷歌地图。

物理尺寸很好。但是,如果我的 TextView 完全依赖于提交按钮(android:layout_above/below),则提交按钮的文本将采用依赖于它的 TextView 的值并会得到更新,而 TextView 将停留在“lat”/long:"并且不会更新。

我目前将 TextView 设置在相对布局的顶部,并将独立的提交按钮设置在底部,并且工作正常。我只是好奇到底发生了什么。

这是我的 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 文件的相关代码。请注意,我没有对此处的按钮文本执行任何操作。它甚至不是这个类的属性。按钮与此类的唯一交互是,它在单击时调用一个方法来启动另一个 Activity 。

    //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

请原谅所有的评论。

最佳答案

好吧,我仍然不确定我是否完全理解您的问题,但开始尝试解决此问题:

我在这里所做的就是获取您的代码并将关系定位放回其上。请注意,如果将一个对象与另一个对象关联,则必须将要引用的对象放在要引用的对象下方。这是因为 id 不在生成的 R.java 中,直到使用 android:id=@+id/object 声明它。在这种情况下,如果您想将一个对象声明为另一个对象之上,那么我们将自下而上构建。

<?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:baselineAligned="false"
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" >

<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:text="Submit" />

<TextView
android:id="@+id/Longitude"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_above="@id/submitbutton"
android:text="Longitude:" />

<TextView
android:id="@+id/Latitude"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/Longitude"
android:layout_alignParentLeft="true"
android:text="Latitude:" />
</RelativeLayout>

</LinearLayout>

编辑:

从你的例子来看,你的问题似乎出在你的java.lang.您如何调用 TextView 来使用您显示的 setText

参见下面的示例:

TextView lattext = (TextView)findViewById(R.id.Latitude); 
lattext.setText("Latitude: " + String.valueOf(Lat));

// And

TextView lontext= (TextView)findViewById(R.id.Longitude);
// Avoid using "Long", Long is reserved... If I am unsure of whether text is reserved
// I will always place my initials in front of it... i.e. "String.valueOf(jjLong));"
lontext.setText("Latitude: " + String.valueOf(Lon));

关于java - Android XML 布局错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10935441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com