SupportMapFragment 和 DrawerLayout 列表不 match_parent

SupportMapFragment and DrawerLayout list not match_parent

我有 SupportMapFragment 和 DrawerLayout with appcompat theme (Theme.AppCompat.Light)。

我的问题是导航抽屉未填充父级高度。截图如下:

我的布局:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment
        android:id="@+id/map"
        class="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ListView
        android:id="@+id/location_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#fff"
        android:choiceMode="singleChoice"
        android:divider="#808080"
        android:dividerHeight="1dp" />

</android.support.v4.widget.DrawerLayout>

我的代码:

public class NewPluginActivity extends UfoFragmentActivity {
    private SupportMapFragment mMapFragment;
    private GoogleMap mGoogleMap;
    private ListView mLocationList;

    @Override
    public void bindObjects() {
        mMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        setDrawerLayout((DrawerLayout) findViewById(R.id.drawer_layout));
        setDrawerToggle(new ActionBarDrawerToggle(this, getDrawerLayout(), R.string.open_drawer, R.string.close_drawer));
        mLocationList = (ListView) findViewById(R.id.location_list);
    }

    @Override
    public void setListeners() {
        mMapFragment.getMapAsync(new MapReadyCallbackListener());
        getDrawerLayout().setDrawerListener(getDrawerToggle());
        mLocationList.setOnItemClickListener(new LocationListClickListener());
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                if (getDrawerToggle().isDrawerIndicatorEnabled()) {
                    if (getDrawerLayout().isDrawerOpen(mLocationList)) {
                        getDrawerLayout().closeDrawer(mLocationList);
                    } else {
                        getDrawerLayout().openDrawer(mLocationList);
                    }
                }
                return true;
        }

        return  super.onOptionsItemSelected(item);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.plugin_activity);
        bindObjects();
        setListeners();

        if (Constants.PAID) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setHomeButtonEnabled(true);
        }
    }

    private class MapReadyCallbackListener implements OnMapReadyCallback {
        @Override
        public void onMapReady(GoogleMap googleMap) {
            mGoogleMap = googleMap;
        }
    }

    private class LocationListClickListener implements android.widget.AdapterView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            getDrawerLayout().closeDrawer(mLocationList);
        }
    }
}

public abstract class UfoFragmentActivity extends ActionBarActivity implements CommonApi {
    private ActionBarDrawerToggle mDrawerToggle;
    private DrawerLayout mDrawerLayout;

    public ActionBarDrawerToggle getDrawerToggle() {
        return mDrawerToggle;
    }

    public void setDrawerToggle(ActionBarDrawerToggle toggle) {
        mDrawerToggle = toggle;
    }

    public DrawerLayout getDrawerLayout() {
        return mDrawerLayout;
    }

    public void setDrawerLayout(DrawerLayout drawerLayout) {
        mDrawerLayout = drawerLayout;
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }
}

如果我将地图片段更改为相对布局(例如)我没有问题...

我的build.gradle:

android {
    compileSdkVersion 22
    buildToolsVersion '22.0.1'
    defaultConfig {
        applicationId "ru.neverdark.phototools.azimuth"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 6
        versionName '1.4'
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile project(':luckycatlabs')
    compile 'com.android.support:support-v4:22.0.0'
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.google.android.gms:play-services:7.0.0'
}

问题已解决。

模拟器问题(我的代码在真实设备上运行良好)