Android XML切断布局的下半部分

我的XML布局有问题,我认为不会给我很多问题。 我在滚动视图下面有一个布局,但布局的底部正在被切断 ,我看不到第二个列表视图中的任何东西。 从四处张望,我似乎无法看到xml本身有什么问题,也看不出我做错了什么。

我已经尝试过对这个问题的build议,那就是给每个不同的元素增加一个权重,但是这还没有解决这个问题。

我还添加了片段放置的主要活动,可能有助于解决问题

片段XML

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/coordinatorLayout"> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:fillViewport="true" android:scrollbars="vertical"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.design.widget.TextInputLayout android:id="@+id/text_input_layout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Recipe Title"/> </android.support.design.widget.TextInputLayout> <TextView android:id="@+id/ingredientsHeading" android:layout_below="@+id/text_input_layout" android:layout_width="fill_parent" android:layout_height="0dp" android:text="Ingredients" android:textStyle="bold|italic" android:layout_weight="1" /> <ListView android:id="@+id/ingredientsList" android:layout_below="@+id/ingredientsHeading" android:layout_above="@+id/directionsHeading" android:layout_width="wrap_content" android:layout_height="195dp" android:layout_weight="1"></ListView> <Button style="@style/Button" android:layout_width="wrap_content" android:layout_height="0dp" android:text="Add Ingredient" android:id="@+id/addIngredient" android:layout_below="@+id/ingredientsList" android:enabled="true" android:layout_gravity="center_horizontal" android:layout_weight="1" /> <TextView android:id="@+id/directionsHeading" android:layout_below="@+id/addIngredient" android:layout_width="fill_parent" android:layout_height="0dp" android:text="Directions" android:textStyle="bold|italic" android:layout_weight="1" /> <ListView android:id="@+id/directionsList" android:layout_below="@+id/directionsHeading" android:layout_width="wrap_content" android:layout_height="195dp" android:layout_weight="1"></ListView> <Button style="@style/Button" android:layout_width="wrap_content" android:layout_height="0dp" android:text="Add Direction" android:id="@+id/addDirection" android:layout_below="@+id/ingredientsList" android:enabled="true" android:layout_gravity="center_horizontal" android:layout_weight="1" /> </LinearLayout> </ScrollView> <android.support.design.widget.FloatingActionButton android:id="@+id/filterButton" app:backgroundTint="@color/floatingButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:clickable="true" android:src="@drawable/ic_filter" android:layout_alignParentBottom="true" android:layout_alignParentEnd="true" android:layout_marginBottom="63dp" android:layout_marginRight="16dp" /> </android.support.design.widget.CoordinatorLayout> 

主要的XML

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout2"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="fixed" app:tabGravity="fill"/> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <FrameLayout android:id="@+id/container_body" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" /> </android.support.design.widget.CoordinatorLayout> <fragment android:id="@+id/fragment_navigation_drawer" android:name="com.example.rory.pocketchef.Fragments.FragmentDrawer" android:layout_width="@dimen/nav_drawer_width" android:layout_height="match_parent" android:layout_gravity="start" app:layout="@layout/fragment_navigation_drawer" tools:layout="@layout/fragment_navigation_drawer" /> </android.support.v4.widget.DrawerLayout> 

Solutions Collecting From Web of "Android XML切断布局的下半部分"

我解决了这个问题。 当滚动视图显示时,底部被实际手机上的底部操作栏切断。 所以为了解决这个问题,我把填充添加到了滚动视图的底部,以便将其推回到操作栏之上。

新的布局如下

更新了可用的XML

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/coordinatorLayout"> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:fillViewport="true" android:scrollbars="vertical" android:paddingBottom="?android:attr/actionBarSize"> <<<-------added this line <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.design.widget.TextInputLayout android:id="@+id/text_input_layout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Recipe Title"/> </android.support.design.widget.TextInputLayout> <TextView android:id="@+id/ingredientsHeading" android:layout_below="@+id/text_input_layout" android:layout_width="fill_parent" android:layout_height="0dp" android:text="Ingredients" android:textStyle="bold|italic" android:layout_weight="1" /> <ListView android:id="@+id/ingredientsList" android:layout_below="@+id/ingredientsHeading" android:layout_above="@+id/directionsHeading" android:layout_width="wrap_content" android:layout_height="195dp" android:layout_weight="1"></ListView> <Button style="@style/Button" android:layout_width="wrap_content" android:layout_height="0dp" android:text="Add Ingredient" android:id="@+id/addIngredient" android:layout_below="@+id/ingredientsList" android:enabled="true" android:layout_gravity="center_horizontal" android:layout_weight="1" /> <TextView android:id="@+id/directionsHeading" android:layout_below="@+id/addIngredient" android:layout_width="fill_parent" android:layout_height="0dp" android:text="Directions" android:textStyle="bold|italic" android:layout_weight="1" /> <ListView android:id="@+id/directionsList" android:layout_below="@+id/directionsHeading" android:layout_width="wrap_content" android:layout_height="195dp" android:layout_weight="1"></ListView> <Button style="@style/Button" android:layout_width="wrap_content" android:layout_height="0dp" android:text="Add Direction" android:id="@+id/addDirection" android:layout_below="@+id/ingredientsList" android:enabled="true" android:layout_gravity="center_horizontal" android:layout_weight="1" /> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_below="@+id/addDirection"> <Button style="@style/Button" android:layout_width="wrap_content" android:layout_height="0dp" android:text="Add Direction" android:id="@+id/showOptionsDialog" android:enabled="true" android:layout_gravity="center_horizontal" android:layout_weight="1" /> <Button style="@style/Button" android:layout_width="wrap_content" android:layout_height="0dp" android:text="Add Direction" android:id="@+id/saveRecipe" android:enabled="true" android:layout_gravity="center_horizontal" android:layout_toRightOf="@+id/showOptionsDialog" android:layout_weight="1" /> </RelativeLayout> </LinearLayout> </ScrollView> <android.support.design.widget.FloatingActionButton android:id="@+id/filterButton" app:backgroundTint="@color/floatingButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:clickable="true" android:src="@drawable/ic_filter" android:layout_alignParentBottom="true" android:layout_alignParentEnd="true" android:layout_marginBottom="63dp" android:layout_marginRight="16dp" /> </android.support.design.widget.CoordinatorLayout> 

在ScrollView中添加这些行

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true" android:scrollbars="vertical"> 

对你的xml文件中的所有组件使用weightSum

这是android:layout_weight 。 权重只能在LinearLayout中使用。 如果linearlayout的方向是Vertical ,则使用android:layout_height="0dp" ,如果方向是水平的 ,则使用android:layout_width =“0d p”。 它会完美的工作。

从你的问题 – 布局的底部正在被切断

这是因为组件的固定高度。

编辑 – xml添加

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5dp" tools:context="info.androidhive.materialtabs.fragments.OneFragment"> <ScrollView android:id="@+id/scrollView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fadingEdge="none" android:fillViewport="true" android:isScrollContainer="true" android:scrollbars="none"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:weightSum="10"> <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1"> <android.support.design.widget.TextInputLayout android:id="@+id/text_input_layout" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Recipe Title" /> </android.support.design.widget.TextInputLayout> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="3.5" android:orientation="vertical"> <TextView android:id="@+id/ingredientsHeading" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:text="Ingredients" android:textStyle="bold|italic" /> <ListView android:id="@+id/ingredientsList" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center"> <Button android:id="@+id/addIngredient" style="@style/AppTheme" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:enabled="true" android:text="Add Ingredient" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="3.5" android:orientation="vertical"> <TextView android:id="@+id/directionsHeading" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:text="Directions" android:textStyle="bold|italic" /> <ListView android:id="@+id/directionsList" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center"> <Button android:id="@+id/addDirection" style="@style/AppBaseTheme" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:enabled="true" android:text="Add Direction" /> </LinearLayout> </LinearLayout> </ScrollView> </LinearLayout> 

你把1的权重和你的scrollview是28.你必须把这样的<LinearLayout weightsum=15> (你不必把15),然后什么是你的布局内,你必须分配你的15和。 像<TextView layout_weight=1>这意味着你的textview将会是1/15。 当我使用体重时,我也把高度或宽度,取决于我想玩哪一个,到0dp。 例如,如果我想在宽度上播放<TextView width=0dp height=wrap_content weight=1> 。 所以你必须给你的LinearLayout每个孩子一个权重。 希望它有帮助。

编辑:另外ListView在ScrollView不是一个好主意,可以从这里来。 看看这篇文章: 我怎么能把一个ListView到一个ScrollView没有崩溃?