7

我在一个带有如下操作栏的活动中有一个 ListView:

<LinearLayout
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    tools:context=".LauncherActivity"

    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
        <ListView
            android:id="@+id/lvcalendar"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:clipToPadding="false"
            android:fitsSystemWindows="true"


            android:dividerHeight="10dp"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:divider="#00ffffff"

            android:scrollbarThumbVertical="@drawable/scrollbarstyle"
            android:layout_gravity="top"
            android:listSelector="@android:color/transparent"
            />
</LinearLayout>

活动主题有:

<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>

在 Kitkat 设备下,行为是我想要的:项目在底部和顶部有 10dp 填充。在 kitkat 设备上,paddingTop 和 paddingBottom 似乎没有效果,因为 ListView 的项目在顶部和底部没有 10dp 填充。

我认为问题出在某个地方,android:fitsSystemWindows因为由于半透明装饰,该属性似乎为视图设置了必要的填充,并使android:padding*属性被忽略。

我的问题:有没有这样我可以android:fitsSystemWindows设置true并仍然在视图上添加额外的填充?

4

5 回答 5

14

您应该将此属性添加到父视图:

<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
tools:context=".LauncherActivity"
android:fitsSystemWindows="true"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
于 2014-06-05T12:31:23.080 回答
1

您可以创建自己的类来扩展 ListView 并fitSystemWindows()在该类中覆盖,以便将插入添加到现有填充中(默认实现用插入替换任何填充)。然后您不需要android:fitsSystemWindows在布局 XML 中指定属性,因为您的新实现将始终被调用。

于 2014-06-19T00:20:11.277 回答
0

将您的 android:fitsSystemWindows="true" 移动到您的父 ListView

于 2021-05-19T09:07:42.953 回答
0

答案是否定的。如果将 android:fitsSystemWindows 设置为 true,它会覆盖该视图的填充。

您可以通过拥有两个嵌套视图来实现您想要的行为,其中父视图的 android:fitsSystemWindows 为 true,其他包含填充。

于 2016-05-22T20:09:30.387 回答
-1

当您使用:

fitsSystemWindows=true

对于布局,填充将重置为插图。您可以使用FitsSystemWindowsFrameLayout来解决此默认行为。

于 2016-07-04T02:43:00.867 回答