Android 在kitkat上安装系统窗口和额外的填充物

Android 在kitkat上安装系统窗口和额外的填充物,android,android-4.4-kitkat,translucentdecor,Android,Android 4.4 Kitkat,Translucentdecor,我在活动中有一个ListView,其中有一个actionbar,如下所示: <LinearLayout xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" tools:context=".LauncherActivity" android:orientation="vertical" and

我在活动中有一个ListView,其中有一个actionbar,如下所示:

<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>
true
真的
在Kitkat设备下,行为就是我想要的:这些项目在底部和顶部都有10dp的填充。在kitkat设备上,paddingTop和paddingBottom似乎没有效果,因为ListView的项在顶部和底部没有10dp填充

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


我的问题:是否还有其他方法可以让我将
android:fitsSystemWindows
设置为
true
,并且仍然在视图上添加额外的填充?

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

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


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

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

您可以通过使用两个嵌套视图来实现所需的行为,其中父视图的android:fitsystemwindows为true,而其他视图包含填充。

当您使用:

fitsSystemWindows=true

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

移动您的android:fitsSystemWindows=“true”
到您的家长列表视图

请检查答案是否已接受,怎么了?我想要的行为不是@Spirit说的。你已经找到解决办法了吗?也有同样的问题不。我实际上忘记了这个问题。我是这个问题的负责人,我不能否决我测试过的不起作用的解决方案?这个堆栈溢出像那样没用。不管怎样,其他人只是投了一些不是解决办法的票。但是,共享问题和答案的地方仍然是无用的。如果将其添加到父活动中,listview将不会填充导航栏。我仍然希望在半透明的导航栏后面有listview,但是我希望有额外的填充加上fitsSystemWindows的填充。这可能不可能,我不知道。如果你需要更多的信息或截图,就说。谢谢你,这就是我需要的。我会尽快尝试,我会在这里告诉你结果和解决方案。谢谢一个链接到一个潜在的解决方案总是受欢迎的,但请你这样做,你的同事用户将有一些想法,它是什么,为什么会在那里。始终引用重要链接中最相关的部分,以防无法访问目标站点或永久脱机。考虑到仅仅是一个指向外部站点的链接是一个可能的原因。