Google マップ、2 つのテキスト ビュー、相対レイアウトのボタンを含む XML レイアウトがあります。テキスト ビューは Google マップの下にあり、ユーザーがカーソルをマップ上に移動すると、"Latitude:" と "Longitude:" というテキスト値が "Latitude:xxx" と "Longitude"xxx" に更新されます。送信ボタンには、次のように表示されます。 「送信」して、それを実行します。緯度/経度をインテントにパッケージ化し、次のアクティビティに渡します。
レイアウトをいじり始めるまで、これはすべて問題ありませんでした。Eclipse でグラフィカル デザイン ツールを怠惰に使用していたため、すべてに寸法が設定されていることに気付きました。
別の相対レイアウトを追加し、そこに緯度/経度テキストと送信ボタンを配置し、新しいレイアウトを、MapView のみを持つ他の相対レイアウトの下に配置しました。
私の意図は、android:layout_weight を使用して、botton の画面の約 15% 程度の下の相対レイアウトを割り当てることでした。画面の残りの部分は Google マップになります。
物理的に寸法は問題ありませんでした。ただし、送信ボタンに依存するテキストビューがまったくある場合 (android:layout_above/below)、送信ボタンのテキストはそれに依存するテキストビューの値を取得し、更新されますが、テキストビューは「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
すべてのコメントをお許しください。