ForegroundViews icon indicating copy to clipboard operation
ForegroundViews copied to clipboard

No foreground after screen rotation

Open dawidhermann opened this issue 9 years ago • 6 comments

On all android versions lower than 6 after screen rotation Foreground Button lose his foreground drawable. After some debuging i realize that onLayout was called twice - second time with changed = false, and then ForegroundDelegate.draw() was called, so when ForegroundDelegate tried to draw something mForegroundBoundsChanged was false. When i removed if (mForegroundBoundsChanged) statement everything was fine.

dawidhermann avatar Oct 05 '16 05:10 dawidhermann

I am actually unable to reproduce this with the sample project. Are you able to reproduce it there? And can you give a little more info such as what device and what version of Android it is?

Jawnnypoo avatar Oct 05 '16 13:10 Jawnnypoo

Any word on reproducing this? @dawidhermann

Jawnnypoo avatar Oct 11 '16 18:10 Jawnnypoo

For me problem exists on all devices below Marshmallow including emulators. I'll check if it happens in sample project or create another one with this bug.

wrozwad avatar Oct 16 '16 00:10 wrozwad

@sosite okay, thanks really appreciate it.

Jawnnypoo avatar Oct 16 '16 04:10 Jawnnypoo

Ok, finally I recreated this behavior. I made all tests on device with Android 4.4.2.

Change your main container from CoordinatorLayout to FrameLayout. Then ~ 1/5 times foreground layouts aren't draw after screen rotation on < Marshmallow.

But if you use any foreground layout as main container - then it doesn't work at all:

<com.commit451.foregroundviews.ForegroundRelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ccc"
    android:foreground="#60f0" />

If you use CoordinatorLayout as main container then you still must add android:fitsSystemWindows="true" to it.

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">
    <!-- without android:fitsSystemWindows="true" ForegroundButton doesn't work -->

    <com.commit451.foregroundviews.ForegroundButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="#ccc"
        android:foreground="#60f0"
        android:text="test"/>
</android.support.design.widget.CoordinatorLayout>

wrozwad avatar Oct 22 '16 11:10 wrozwad

#14 might fix this.

technoir42 avatar Oct 28 '18 17:10 technoir42