Rainey
Rainey

Reputation: 119

android:fitsSystemWindows not working on Toolbar

I'm using android library Android-ObservableScrollView from ksoichiro. I use his sample Flexible Space with viewpager and i modify it. But there's some problem. You can see in my xml there is 2 android:fitsSystemWindows. One in LinearLayout, and the other in Toolbar. In LinearLayout working good. but in Toolbar is not working. Why this happen? Thank you. Sorry for my bad english

theres my xml code:

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

<com.github.ksoichiro.android.observablescrollview.TouchInterceptionFrameLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="@dimen/flexible_background"
        android:scaleType="centerCrop"
        android:src="@drawable/bridge" />

    <View
        android:id="@+id/overlay"
        android:layout_width="match_parent"
        android:layout_height="@dimen/flexible_background"
        android:background="?attr/colorPrimary" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:fitsSystemWindows="true">

        <FrameLayout
            android:id="@+id/header"
            android:layout_width="match_parent"
            android:layout_height="@dimen/flexible_height">

            <TextView
                android:id="@+id/title"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:layout_gravity="bottom"
                android:layout_margin="@dimen/abc_action_bar_default_padding_material"
                android:ellipsize="end"
                android:gravity="center_vertical"
                android:maxLines="1"
                android:minHeight="?attr/actionBarSize"
                android:textColor="@android:color/white"
                android:textSize="20sp" />
        </FrameLayout>

        <com.bright.nongkrongyuk.ui.SlidingTabLayout
            android:id="@+id/sliding_tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:background="@android:color/black"
            app:sliding_textColor="@drawable/sliding_tab_profile" />

        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/background_light" />
    </LinearLayout>
</com.github.ksoichiro.android.observablescrollview.TouchInterceptionFrameLayout>

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@android:color/transparent"
    android:minHeight="?attr/actionBarSize"
    android:fitsSystemWindows="true" />
</FrameLayout>

Upvotes: 6

Views: 9697

Answers (1)

robocab
robocab

Reputation: 787

The android:fitsSystemWindows attribute sets a padding. This means the fitting applies to the child views. You would have to apply this either to your FrameLayout or put the Toolbar into a nested Layout

It's really tricky to make a proper fullscreen layout with views fitted to the screen. I subclassed Fragment where I can declare a content-view which will get padding depending on Status- and/or Navigationbar

Upvotes: 16

Related Questions