fitsSystemWindows and extra padding on kitkat
Solution 1
You should add this attribute to parent view :
<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" >
Solution 2
You can create your own class that extends ListView and override fitSystemWindows()
in that class, in order to add the insets to the existing padding (the default implementation replaces any padding with the insets). Then you don't need to specify the android:fitsSystemWindows
attribute in the layout XML because your new implementation will always be called.
![Admin](/assets/logo_square_200-5d0d61d6853298bd2a4fe063103715b4daf2819fc21225efa21dfb93e61952ea.png)
Admin
Updated on June 13, 2022Comments
-
Admin about 2 years
I have a ListView in an activity with an actionbar like this:
<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>
The activity theme have:
<item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">true</item>
Under Kitkat devices, the behaviour is what I want: the items have 10dp padding at the bottom and at the top. On kitkat devices the paddingTop and paddingBottom seem to have no efect as the ListView's item do not have the 10dp padding at the top and bottom.
I think the problem is somewhere in
android:fitsSystemWindows
as this attribute seem to set the necessary padding to the view because of translucent decor and make theandroid:padding*
attributes being ignored.My question: is there anyway so I can have the
android:fitsSystemWindows
set totrue
and still add extra padding on the view?