Android片段底部的奇怪空白?
Posted
技术标签:
【中文标题】Android片段底部的奇怪空白?【英文标题】:Odd white space at the bottom of the Android fragment? 【发布时间】:2016-08-14 02:57:22 【问题描述】:我遇到了一个奇怪的问题:片段底部有一个空白,我无法摆脱它。还值得一提的是,如果我单击任何按钮,这个空间就会消失。
感谢任何帮助!请在下面找到屏幕截图和布局代码。
Screenshot
DetailActivity 布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/detail_container"
android:layout_
android:layout_
tools:context="org.ogasimli.manat.activity.DetailActivity"
tools:ignore="MergeRootFrame" />
DetailFragment 布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
tools:context="org.ogasimli.manat.fragment.DetailActivityFragment"
android:background="@color/colorAccent">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/detail_result_view"
android:layout_
android:layout_
android:fitsSystemWindows="true"
android:visibility="gone"
tools:visibility="visible">
<android.support.design.widget.AppBarLayout
android:layout_
android:layout_
app:elevation="0dp"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_detail"
android:layout_
android:layout_
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.AppBarOverlay"/>
</android.support.design.widget.AppBarLayout>
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:layout_marginTop="?actionBarSize"
android:weightSum="7">
<include layout="@layout/detail_chart_grid"
android:layout_
android:layout_
android:layout_weight="4.5"/>
<include layout="@layout/detail_extras_grid"
android:layout_
android:layout_
android:layout_weight="2.5"/>
</LinearLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab_share_details"
android:layout_
android:layout_
android:layout_margin="24dp"
android:elevation="8dp"
android:src="@drawable/ic_share"
app:layout_anchor="@id/cardview_details"
app:layout_anchorGravity="top|right|end"
app:rippleColor="@color/colorPrimary"
tools:targetApi="lollipop"/>
</android.support.design.widget.CoordinatorLayout>
<LinearLayout
android:id="@+id/detail_error_view"
android:layout_
android:layout_
android:gravity="center"
android:layout_centerInParent="true"
android:orientation="vertical"
android:visibility="gone">
<include
android:layout_
android:layout_
layout="@layout/error_view"
android:layout_gravity="center"/>
</LinearLayout>
详细图表网格布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_ xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:background="@color/colorPrimary">
<com.github.mikephil.charting.charts.LineChart
android:id="@+id/linechart"
android:layout_
android:layout_
android:layout_margin="10dp"
android:layout_weight="3"/>
<include layout="@layout/detail_button_grid"
android:layout_
android:layout_
android:layout_gravity="center"
android:layout_marginBottom="26dp"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_weight="1"/>
</LinearLayout>
详细的附加网格布局:
<?xml version="1.0" encoding="utf-8"?>
<!-- Detail Layout for Grid -->
<android.support.v7.widget.CardView
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/cardview_details"
android:layout_
android:layout_
app:layout_gravity="center"
app:contentPaddingLeft="16dp"
app:contentPaddingRight="22dp"
app:cardCornerRadius="16dp"
app:cardBackgroundColor="?colorAccent"
app:cardElevation="0dp">
<android.support.v7.widget.GridLayout
android:id="@+id/detail_additional_pane"
android:layout_
android:layout_
android:layout_weight="2"
app:columnCount="2">
<TextView
android:id="@+id/detail_statistic_label_text_view"
android:layout_
android:gravity="center_vertical"
android:textAllCaps="true"
android:fontFamily="sans-serif-medium"
android:textColor="?colorPrimary"
android:text="@string/detail_statistics_label"
android:minHeight="48dp"
android:textSize="18sp"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_rowWeight="1"
app:layout_columnSpan="2"/>
<TextView
android:layout_
android:text="Current rate"
android:gravity="center_vertical"
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
android:paddingBottom="5dp"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_rowWeight="1"/>
<TextView
android:id="@+id/detail_current_rate_textview"
android:gravity="center_vertical"
android:fontFamily="sans-serif-light"
android:textColor="@color/colorTextPrimary"
android:textSize="18dp"
android:paddingBottom="5dp"
app:layout_gravity="right"
tools:text="1.5571"/>
<TextView
android:layout_
android:gravity="center_vertical"
android:text="Average rate"
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
android:paddingBottom="5dp"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_rowWeight="1"/>
<TextView
android:id="@+id/detail_average_rate_textview"
android:gravity="center_vertical"
android:fontFamily="sans-serif-light"
android:textColor="@color/colorTextPrimary"
android:textSize="18dp"
android:paddingBottom="5dp"
app:layout_gravity="right"
tools:text="1.567"/>
<TextView
android:layout_
android:gravity="center_vertical"
android:text="Maximum rate"
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
android:paddingBottom="5dp"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_rowWeight="1"/>
<TextView
android:id="@+id/detail_max_rate_textview"
android:gravity="center_vertical"
android:fontFamily="sans-serif-light"
android:textColor="@color/colorTextPrimary"
android:textSize="18dp"
android:paddingBottom="5dp"
app:layout_gravity="right"
tools:text="1.602"/>
<TextView
android:layout_
android:gravity="center_vertical"
android:text="Minimum rate"
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
android:paddingBottom="5dp"
app:layout_columnWeight="1"
app:layout_gravity="fill"
app:layout_rowWeight="1"/>
<TextView
android:id="@+id/detail_min_rate_textview"
android:gravity="center_vertical"
android:fontFamily="sans-serif-light"
android:textColor="@color/colorTextPrimary"
android:textSize="18dp"
android:paddingBottom="5dp"
app:layout_gravity="right"
tools:text="1.5571"/>
</android.support.v7.widget.GridLayout>
</android.support.v7.widget.CardView>
【问题讨论】:
使 CoordinatorLayout 成为根布局,如果需要,在其中放置一个 RelativeLayout。 也发布您的活动布局 添加了活动布局 @DanielNugent coordinatorlayout 最初是根布局,但是当我实现错误视图时,我决定以这种方式更改它,因为否则我无法管理结果和错误视图。 在包含细节的细节网格布局中。有边距底部。尝试删除它 【参考方案1】:调试奇怪的空格和边距的最佳方法是使用 XML 快照。
在Android studio
,点击“Android device monitor
”按钮(绿色机器人图标)
在设备监视器中,确保在左侧窗格中选择了您的设备,然后单击“Dump view hierarchy
”按钮(3 个电话图标)。
然后,您应该会看到可见屏幕的屏幕截图,其中创建它的 xml 在右侧。
您可以将鼠标悬停在底部间距上以查看它在 xml 中的来源。
【讨论】:
非常感谢@marmor!我会试试这个解决方案 现在是Layout Inspector
,见developer.android.com/studio/profile/monitor。 Tools > Layout Inspector
.【参考方案2】:
已解决
正如@marmor 所建议的那样,使用了 Android 设备监视器并显示片段的根目录存在问题。因此,我决定遵循@DanielNugent 的建议,将片段的 CoordinatorLayout 根布局,然后奇怪的空白消失了。
【讨论】:
【参考方案3】:在我的情况下,问题不仅出现在Activity
和Fragment
中的CoordinatorLayout
中(正如 Orkhan Gasimli 建议的那样,我在Fragment
中更改为ConstraintLayout
)。
SoftInputAssist
(Android How to adjust layout in Full Screen Mode when softkeyboard is visible) 在全屏模式下调整布局时出现问题。一开始是全屏的,后来改成惯用的样式,出现了空白(id/content
比片段容器有更多的空间)。在这种情况下,删除 SoftInputAssist
并查看 https://***.com/a/52850584/2914140。
【讨论】:
以上是关于Android片段底部的奇怪空白?的主要内容,如果未能解决你的问题,请参考以下文章