0

私は現在、起動時にユーザーに Google マップを表示できるようにする小さなアプリケーションに取り組んでいます。画面の上部にメニュー バーが表示されるはずですが、任意のデバイスでアプリを実行すると、レイアウト全体にマップが表示され、メニュー バーが重なって表示されます。

フラグメントがメニュー バーに重ならないようにするにはどうすればよいですか?

アクティビティの現在のレイアウトは次のとおりです。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/dark_grey"
    android:orientation="vertical"
    android:weightSum="10"
    map:mapType="normal"
    tools:context=".Map" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:orientation="horizontal"
        android:weightSum="3" >

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/ic_launcher" />

        <Spinner
            android:id="@+id/menuSpinner"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="2"
            android:entries="@array/menu_array"
            android:textSize="10sp" />
    </LinearLayout>

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    </LinearLayout>

ご覧のとおり、レイアウトはかなりシンプルで、メニュー バーが LinearLayout で、マップがフラグメントになっているだけです。

このコードもかなり単純で、スピナーを設定してマップを初期化するだけです。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(edu.wcu.trackerapp.R.layout.activity_map);
    // Initialize the spinner
    menu = (Spinner) findViewById(R.id.menuSpinner);
    // Set up the listener for the spinner.
    menu.setOnItemSelectedListener(this);
    try {
        // Loading map
        initializeMap();
    } catch (Exception e) {
        e.printStackTrace();
    }

}

/**
 * function to load map. If map is not created it will create it for you
 * */
private void initializeMap() {
    if (googleMap == null) {
        googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
        if (googleMap == null) {
            Toast.makeText(getApplicationContext(),
                    "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                    .show();
        } else {
            googleMap.setMyLocationEnabled(true);
            googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
                    cullowLocation, 15));
        }
    }
}

最後に、マップ コードが有効になっている、デバイスで実行されているアプリケーションのスクリーンショットを次に示します。マップ全画面スクリーンショット

4

1 に答える 1

3

レイアウトの垂直/高さの部分は現在

<LinearLayout
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="10">

    <LinearLayout
        android:layout_height="0dp"
        android:layout_weight="1" />

    <fragment
        android:layout_height="wrap_content" />

</LinearLayout>

また、他の部分に対して行ったように、重みと高さをマップ フラグメントに追加すると機能するはずです。

<LinearLayout
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="10">

    <LinearLayout
        android:layout_height="0dp"
        android:layout_weight="1" />

    <fragment
        android:layout_height="0dp"
        android:layout_weight="9" />

</LinearLayout>

または、ウェイトを使用しない場合

<LinearLayout
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <LinearLayout
        android:layout_height="wrap_content"
     />

    <fragment
        android:layout_height="match_parent"
     />

</LinearLayout>
于 2013-11-08T21:54:55.250 に答える