繁体   English   中英

膨胀的片段不会占用所有空间

[英]Inflated Fragment not consuming all the space

因此,我最近一直在努力将应用程序切换为使用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");
}

有趣的是,如果我使用意图并调用NewRecord.java类,则该视图可以正常工作。 如果我夸大我的NewRecordFragment.java正在取代NewRecord.java,是当我有问题。

有任何想法吗?

占用空间的原因是因为您的容器布局(将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将占用所有空间。

我将删除这些行:

android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM