膨胀的碎片不占用所有空间

时间:2014-03-03 16:33:34

标签: java android android-fragments android-inflate

所以我最近一直致力于将我的应用程序转换为使用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 充气,那就是我遇到问题。

有什么想法吗?

2 个答案:

答案 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"