У меня есть XML-макет с картой google, двумя текстовыми представлениями и кнопкой в относительной компоновке. Текстовые представления находятся ниже карты google с текстовыми значениями «Широта:» и «Долгота», которые обновляются до «Широта: xxx» и «Долгота» xxx », когда пользователь перемещает курсор на карте. «Отправить» и делает именно это, он упаковывает lat/lon в намерение и передает его на следующую операцию.Ошибка XML-макета Android
Все было в порядке, пока я не начал возиться с макетом. Я заметил это, потому что я лениво использовал Инструмент графического дизайна в eclipse, все заданные размеры, что означает, что на больших экранах это выглядело глупо.
Я добавил еще один относительный макет и поместил в него длинные тексты и кнопку отправки и разместил новый макет под другим относительный макет, который теперь имеет только MapView.
Мое намерение состояло в том, чтобы использовать android: layout_weight, чтобы назначить нижний относительный макет примерно на 15% или около экрана на botton, а остальная часть экрана будет отображаться на карте google.
Физически размеры были прекрасными. Однако, если бы у меня было текстовое изображение, зависящее от кнопки отправки вообще (андроид: layout_above/ниже), текст кнопки отправки принимал бы значение текстового просмотра, зависящего от него, и обновлялся, в то время как текстовое изображение застряло бы на «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
Пожалуйста, простите все комментарии.
Я не понял пункт в 5º. Ваша проблема в том, что TextViews не обновляются?И опубликуйте xml с проблемой. –
Я уверен, что это не связано, но вам не хватает ' LinearLayout>'. А также MapView 'android: enabled =" true "' устарел, используйте 'android: state_enabled =" true "' – jnthnjns
@AlexOliveira, если вы измените ориентацию текста в зависимости от кнопки отправки, текст кнопки отправки станет значение зависимого текстового представления и больше не будет вызывать метод «ГОТОУПЛАДОК», указанный андроидом: onclick. Так что, если бы у меня было текстовое представление широты ниже submitbutton с помощью android: layout_below = "submitbutton", атрибут text submitbutton стал бы 42.76485 или каким бы то ни было значением широты и щелчком он ничего не сделал. – 0nyx