Fix content insets for API30+ devices.

fork-5.53.8
Alex Hart 2021-04-30 13:15:56 -03:00
rodzic 1a452efbb9
commit 7fa200401c
1 zmienionych plików z 26 dodań i 4 usunięć

Wyświetl plik

@ -1,14 +1,19 @@
package org.thoughtcrime.securesms.components; package org.thoughtcrime.securesms.components;
import android.annotation.TargetApi;
import android.content.Context; import android.content.Context;
import android.graphics.Insets;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Build;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.WindowInsets;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.Guideline; import androidx.constraintlayout.widget.Guideline;
import org.signal.glide.Log;
import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.util.ViewUtil; import org.thoughtcrime.securesms.util.ViewUtil;
@ -26,12 +31,31 @@ public class InsetAwareConstraintLayout extends ConstraintLayout {
super(context, attrs, defStyleAttr); super(context, attrs, defStyleAttr);
} }
public InsetAwareConstraintLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { @Override
super(context, attrs, defStyleAttr, defStyleRes); @TargetApi(20)
public WindowInsets onApplyWindowInsets(WindowInsets insets) {
if (Build.VERSION.SDK_INT < 30) {
return super.onApplyWindowInsets(insets);
}
Insets windowInsets = insets.getInsets(WindowInsets.Type.systemBars() | WindowInsets.Type.ime() | WindowInsets.Type.displayCutout());
applyInsets(new Rect(windowInsets.left, windowInsets.top, windowInsets.right, windowInsets.bottom));
return super.onApplyWindowInsets(insets);
} }
@Override @Override
protected boolean fitSystemWindows(Rect insets) { protected boolean fitSystemWindows(Rect insets) {
if (Build.VERSION.SDK_INT >= 30) {
return true;
}
applyInsets(insets);
return true;
}
private void applyInsets(@NonNull Rect insets) {
Guideline statusBarGuideline = findViewById(R.id.status_bar_guideline); Guideline statusBarGuideline = findViewById(R.id.status_bar_guideline);
Guideline navigationBarGuideline = findViewById(R.id.navigation_bar_guideline); Guideline navigationBarGuideline = findViewById(R.id.navigation_bar_guideline);
Guideline parentStartGuideline = findViewById(R.id.parent_start_guideline); Guideline parentStartGuideline = findViewById(R.id.parent_start_guideline);
@ -60,7 +84,5 @@ public class InsetAwareConstraintLayout extends ConstraintLayout {
parentEndGuideline.setGuidelineEnd(insets.left); parentEndGuideline.setGuidelineEnd(insets.left);
} }
} }
return true;
} }
} }