所以我最近一直致力于将我的应用程序转换为使用Fragments使其更灵活。我注意到的一件事是,当我给片段视图充气时,它没有占据整个屏幕,顶部(操作栏下方)仍然存在间隙,这实际上是我的activity_main.xml的一部分
这是我的观点和我膨胀的地方。
activity_main.xml中
<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">
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:background="@color/mainBlue"
android:orientation="vertical" >
<TextView
android:id="@+id/appTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/white"
android:gravity="center_horizontal"
android:textSize="75sp"
android:layout_weight="2"/>
<TextView
android:id="@+id/newRecord"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/newRecord"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_horizontal"
android:textSize="50sp"
android:textColor="@color/white"
android:layout_weight="1" />
<TextView
android:id="@+id/pastRecords"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/pastRecords"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_horizontal"
android:textSize="50sp"
android:textColor="@color/white"
android:layout_weight="1" />
<TextView
android:id="@+id/statistics"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/statistics"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_horizontal"
android:textSize="50sp"
android:textColor="@color/white"
android:layout_weight="1" />
<TextView
android:id="@+id/settings"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/settings"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_horizontal"
android:textSize="50sp"
android:textColor="@color/white"
android:layout_weight="1" />
</LinearLayout>
<!-- The navigation drawer -->
<ListView
android:id="@+id/list_slidermenu"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"/>
</android.support.v4.widget.DrawerLayout>
new_record.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"
android:background="@color/mainBlue">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1" >
<EditText
android:id="@+id/pricePerGallon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/pricePerGallon"
android:inputType="numberDecimal"
android:textSize="30sp"
android:textColor="@color/white"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_weight="1">
<requestFocus />
</EditText>
<EditText
android:id="@+id/gallons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/gallons"
android:inputType="numberDecimal"
android:textSize="30sp"
android:textColor="@color/white"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_weight="1"/>
<EditText
android:id="@+id/odometer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/odometer"
android:inputType="numberDecimal"
android:textSize="30sp"
android:textColor="@color/white"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_weight="1"/>
<EditText
android:id="@+id/date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="date"
android:textSize="30sp"
android:textColor="@color/white"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_weight="1"/>
<EditText
android:id="@+id/comments"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:textSize="30sp"
android:textColor="@color/white"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:hint="@string/comments"
android:layout_weight="1"/>
<CheckBox
android:id="@+id/completeFill"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/notCompleteFill"
android:textColor="@color/white"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@color/mainBlue"
android:gravity="center_horizontal" >
<TextView
android:id="@+id/save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/save"
android:textSize="50sp"
android:textColor="@color/white"
android:layout_weight="1"
android:gravity="center_horizontal"/>
<TextView
android:id="@+id/reset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/reset"
android:textSize="50sp"
android:textColor="@color/white"
android:layout_weight="1"
android:gravity="center_horizontal" />
</LinearLayout>
</LinearLayout>
MainActivity.java (此处充气片段)
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.main_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
有趣的是,如果我使用一个intent并调用我的 NewRecord.java 类,那么视图效果很好。如果我给正在替换NewRecord.java的 NewRecordFragment.java 充气,那就是我遇到问题。
有什么想法吗?
答案 0 :(得分:1)
空间的原因是因为您的容器布局(Fragment
被充气的布局)已应用填充:
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:background="@color/mainBlue"
android:orientation="vertical" >
删除顶部,底部,左侧和右侧的填充,Fragment
将占用所有空间。
答案 1 :(得分:1)
我会删除这些行:
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"