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'
}
问题已解决。
模拟器问题(我的代码在真实设备上运行良好)
我有 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'
}
问题已解决。
模拟器问题(我的代码在真实设备上运行良好)