mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 20:48:43 +00:00
Fix content insets for API30+ devices.
This commit is contained in:
@@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user