diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/JetnewsApp.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/JetnewsApp.kt
index 7c879d510b..3cc1c6d3d1 100644
--- a/JetNews/app/src/main/java/com/example/jetnews/ui/JetnewsApp.kt
+++ b/JetNews/app/src/main/java/com/example/jetnews/ui/JetnewsApp.kt
@@ -17,12 +17,6 @@
package com.example.jetnews.ui
import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.WindowInsets
-import androidx.compose.foundation.layout.WindowInsetsSides
-import androidx.compose.foundation.layout.add
-import androidx.compose.foundation.layout.asPaddingValues
-import androidx.compose.foundation.layout.only
-import androidx.compose.foundation.layout.systemBars
import androidx.compose.material3.DrawerState
import androidx.compose.material3.DrawerValue
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -33,8 +27,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
-import androidx.compose.ui.unit.Dp
-import androidx.compose.ui.unit.dp
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import com.example.jetnews.data.AppContainer
@@ -98,7 +90,6 @@ fun JetnewsApp(
/**
* Determine the drawer state to pass to the modal drawer.
*/
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun rememberSizeAwareDrawerState(isExpandedScreen: Boolean): DrawerState {
val drawerState = rememberDrawerState(DrawerValue.Closed)
@@ -114,16 +105,3 @@ private fun rememberSizeAwareDrawerState(isExpandedScreen: Boolean): DrawerState
DrawerState(DrawerValue.Closed)
}
}
-
-/**
- * Determine the content padding to apply to the different screens of the app
- */
-@Composable
-fun rememberContentPaddingForScreen(
- additionalTop: Dp = 0.dp,
- excludeTop: Boolean = false
-) =
- WindowInsets.systemBars
- .only(if (excludeTop) WindowInsetsSides.Bottom else WindowInsetsSides.Vertical)
- .add(WindowInsets(top = additionalTop))
- .asPaddingValues()
diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/MainActivity.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/MainActivity.kt
index 3b925d6de4..bd6d2ac0bd 100644
--- a/JetNews/app/src/main/java/com/example/jetnews/ui/MainActivity.kt
+++ b/JetNews/app/src/main/java/com/example/jetnews/ui/MainActivity.kt
@@ -19,17 +19,17 @@ package com.example.jetnews.ui
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
+import androidx.activity.enableEdgeToEdge
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
-import androidx.core.view.WindowCompat
import com.example.jetnews.JetnewsApplication
class MainActivity : ComponentActivity() {
@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge()
super.onCreate(savedInstanceState)
- WindowCompat.setDecorFitsSystemWindows(window, false)
val appContainer = (application as JetnewsApplication).container
setContent {
diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/article/ArticleScreen.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/article/ArticleScreen.kt
index 8cf9cdba79..5891166cbb 100644
--- a/JetNews/app/src/main/java/com/example/jetnews/ui/article/ArticleScreen.kt
+++ b/JetNews/app/src/main/java/com/example/jetnews/ui/article/ArticleScreen.kt
@@ -157,10 +157,9 @@ private fun ArticleScreenContent(
) { innerPadding ->
PostContent(
post = post,
+ contentPadding = innerPadding,
modifier = Modifier
- .nestedScroll(scrollBehavior.nestedScrollConnection)
- // innerPadding takes into account the top and bottom bar
- .padding(innerPadding),
+ .nestedScroll(scrollBehavior.nestedScrollConnection),
state = lazyListState,
)
}
diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/article/PostContent.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/article/PostContent.kt
index b180cc144c..7ad2361c77 100644
--- a/JetNews/app/src/main/java/com/example/jetnews/ui/article/PostContent.kt
+++ b/JetNews/app/src/main/java/com/example/jetnews/ui/article/PostContent.kt
@@ -84,11 +84,12 @@ private val defaultSpacerSize = 16.dp
fun PostContent(
post: Post,
modifier: Modifier = Modifier,
+ contentPadding: PaddingValues = PaddingValues(0.dp),
state: LazyListState = rememberLazyListState()
) {
LazyColumn(
- contentPadding = PaddingValues(defaultSpacerSize),
- modifier = modifier,
+ contentPadding = contentPadding,
+ modifier = modifier.padding(horizontal = defaultSpacerSize),
state = state,
) {
postContentItems(post)
diff --git a/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeScreens.kt b/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeScreens.kt
index f6d8394d99..8f628ee275 100644
--- a/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeScreens.kt
+++ b/JetNews/app/src/main/java/com/example/jetnews/ui/home/HomeScreens.kt
@@ -103,7 +103,6 @@ import com.example.jetnews.ui.article.postContentItems
import com.example.jetnews.ui.article.sharePost
import com.example.jetnews.ui.components.JetnewsSnackbarHost
import com.example.jetnews.ui.modifiers.interceptKey
-import com.example.jetnews.ui.rememberContentPaddingForScreen
import com.example.jetnews.ui.theme.JetnewsTheme
import com.example.jetnews.ui.utils.BookmarkButton
import com.example.jetnews.ui.utils.FavoriteButton
@@ -144,11 +143,7 @@ fun HomeFeedWithArticleDetailsScreen(
openDrawer = openDrawer,
snackbarHostState = snackbarHostState,
modifier = modifier,
- ) { hasPostsUiState, contentModifier ->
- val contentPadding = rememberContentPaddingForScreen(
- additionalTop = if (showTopAppBar) 0.dp else 8.dp,
- excludeTop = showTopAppBar
- )
+ ) { hasPostsUiState, contentPadding, contentModifier ->
Row(contentModifier) {
PostList(
postsFeed = hasPostsUiState.postsFeed,
@@ -246,17 +241,14 @@ fun HomeFeedScreen(
openDrawer = openDrawer,
snackbarHostState = snackbarHostState,
modifier = modifier
- ) { hasPostsUiState, contentModifier ->
+ ) { hasPostsUiState, contentPadding, contentModifier ->
PostList(
postsFeed = hasPostsUiState.postsFeed,
favorites = hasPostsUiState.favorites,
showExpandedSearch = !showTopAppBar,
onArticleTapped = onSelectPost,
onToggleFavorite = onToggleFavorite,
- contentPadding = rememberContentPaddingForScreen(
- additionalTop = if (showTopAppBar) 0.dp else 8.dp,
- excludeTop = showTopAppBar
- ),
+ contentPadding = contentPadding,
modifier = contentModifier,
state = homeListLazyListState,
searchInput = searchInput,
@@ -286,6 +278,7 @@ private fun HomeScreenWithList(
modifier: Modifier = Modifier,
hasPostsContent: @Composable (
uiState: HomeUiState.HasPosts,
+ contentPadding: PaddingValues,
modifier: Modifier
) -> Unit
) {
@@ -303,9 +296,7 @@ private fun HomeScreenWithList(
},
modifier = modifier
) { innerPadding ->
- val contentModifier = Modifier
- .padding(innerPadding)
- .nestedScroll(scrollBehavior.nestedScrollConnection)
+ val contentModifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection)
LoadingContent(
empty = when (uiState) {
@@ -317,13 +308,14 @@ private fun HomeScreenWithList(
onRefresh = onRefreshPosts,
content = {
when (uiState) {
- is HomeUiState.HasPosts -> hasPostsContent(uiState, contentModifier)
+ is HomeUiState.HasPosts ->
+ hasPostsContent(uiState, innerPadding, contentModifier)
is HomeUiState.NoPosts -> {
if (uiState.errorMessages.isEmpty()) {
// if there are no posts, and no error, let the user refresh manually
TextButton(
onClick = onRefreshPosts,
- modifier.fillMaxSize()
+ modifier.padding(innerPadding).fillMaxSize()
) {
Text(
stringResource(id = R.string.home_tap_to_load_content),
@@ -332,7 +324,11 @@ private fun HomeScreenWithList(
}
} else {
// there's currently an error showing, don't show any content
- Box(contentModifier.fillMaxSize()) { /* empty screen */ }
+ Box(
+ contentModifier
+ .padding(innerPadding)
+ .fillMaxSize()
+ ) { /* empty screen */ }
}
}
}
diff --git a/JetNews/app/src/main/res/values-v23/themes.xml b/JetNews/app/src/main/res/values-v23/themes.xml
deleted file mode 100644
index eb0a1f4b47..0000000000
--- a/JetNews/app/src/main/res/values-v23/themes.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
diff --git a/JetNews/app/src/main/res/values-v27/themes.xml b/JetNews/app/src/main/res/values-v27/themes.xml
deleted file mode 100644
index 5bd2e6dc56..0000000000
--- a/JetNews/app/src/main/res/values-v27/themes.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
diff --git a/JetNews/app/src/main/res/values/themes.xml b/JetNews/app/src/main/res/values/themes.xml
index 4d09a5a40f..2a88e87472 100644
--- a/JetNews/app/src/main/res/values/themes.xml
+++ b/JetNews/app/src/main/res/values/themes.xml
@@ -14,14 +14,5 @@
limitations under the License.
-->
-
-
-
-
-
-
+