Fix nav bar spacing and coloring.

This commit is contained in:
Alex Hart
2025-04-10 13:10:37 -03:00
parent 9d6e7560f0
commit 6613d5fccb
4 changed files with 58 additions and 21 deletions

View File

@@ -10,7 +10,6 @@ import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
@@ -177,15 +176,13 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
AppStartup.getInstance().onCriticalRenderEventStart()
if (Build.VERSION.SDK_INT > 21) {
enableEdgeToEdge(
navigationBarStyle = if (DynamicTheme.isDarkTheme(this)) {
SystemBarStyle.dark(0)
} else {
SystemBarStyle.light(0, 0)
}
)
}
enableEdgeToEdge(
navigationBarStyle = if (DynamicTheme.isDarkTheme(this)) {
SystemBarStyle.dark(0)
} else {
SystemBarStyle.light(0, 0)
}
)
conversationListTabsViewModel

View File

@@ -12,9 +12,10 @@ import androidx.compose.animation.core.tween
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape
@@ -101,13 +102,12 @@ fun MainNavigationBar(
state: MainNavigationState,
onDestinationSelected: (MainNavigationDestination) -> Unit
) {
Box(modifier = Modifier.background(color = SignalTheme.colors.colorSurface2)) {
Column(modifier = Modifier.background(color = SignalTheme.colors.colorSurface2)) {
NavigationBar(
containerColor = SignalTheme.colors.colorSurface2,
contentColor = MaterialTheme.colorScheme.onSurface,
modifier = Modifier
.navigationBarsPadding()
.height(if (state.compact) 48.dp else 80.dp)
modifier = Modifier.height(if (state.compact) 48.dp else 80.dp),
windowInsets = WindowInsets(0, 0, 0, 0)
) {
val entries = remember(state.isStoriesFeatureEnabled) {
if (state.isStoriesFeatureEnabled) {
@@ -144,6 +144,8 @@ fun MainNavigationBar(
)
}
}
NavigationBarSpacerCompat()
}
}

View File

@@ -0,0 +1,34 @@
/*
* Copyright 2025 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.thoughtcrime.securesms.main
import android.os.Build
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.windowInsetsBottomHeight
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import org.signal.core.util.DimensionUnit
import org.thoughtcrime.securesms.util.ViewUtil
@Composable
fun NavigationBarSpacerCompat() {
if (Build.VERSION.SDK_INT > 23) {
Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.navigationBars))
} else {
val resources = LocalContext.current.resources
val navigationBarHeight = remember(resources) {
DimensionUnit.PIXELS.toDp(ViewUtil.getNavigationBarHeight(resources).toFloat()).dp
}
Spacer(Modifier.height(navigationBarHeight))
}
}

View File

@@ -385,15 +385,19 @@ public final class ViewUtil {
if (Build.VERSION.SDK_INT > 29 && rootWindowInsets != null) {
return rootWindowInsets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom;
} else {
int result = 0;
int resourceId = view.getResources().getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
result = view.getResources().getDimensionPixelSize(resourceId);
}
return result;
return getNavigationBarHeight(view.getResources());
}
}
public static int getNavigationBarHeight(@NonNull Resources resources) {
int result = 0;
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
result = resources.getDimensionPixelSize(resourceId);
}
return result;
}
public static void hideKeyboard(@NonNull Context context, @NonNull View view) {
InputMethodManager inputManager = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), 0);