Вроде сделал menubar, но у меня ошибка....
This commit is contained in:
parent
f7ca7b8057
commit
1ffd67fa14
@ -51,6 +51,9 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
||||||
|
implementation("androidx.navigation:navigation-compose:2.7.4")
|
||||||
|
implementation("androidx.compose.material:material:1.5.4")
|
||||||
|
|
||||||
implementation("androidx.core:core-ktx:1.9.0")
|
implementation("androidx.core:core-ktx:1.9.0")
|
||||||
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
|
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
|
||||||
implementation("androidx.activity:activity-compose:1.7.0")
|
implementation("androidx.activity:activity-compose:1.7.0")
|
||||||
@ -58,7 +61,7 @@ dependencies {
|
|||||||
implementation("androidx.compose.ui:ui")
|
implementation("androidx.compose.ui:ui")
|
||||||
implementation("androidx.compose.ui:ui-graphics")
|
implementation("androidx.compose.ui:ui-graphics")
|
||||||
implementation("androidx.compose.ui:ui-tooling-preview")
|
implementation("androidx.compose.ui:ui-tooling-preview")
|
||||||
implementation("androidx.compose.material3:material3")
|
//implementation("androidx.compose.material3:material3")
|
||||||
testImplementation("junit:junit:4.13.2")
|
testImplementation("junit:junit:4.13.2")
|
||||||
androidTestImplementation("androidx.test.ext:junit:1.1.5")
|
androidTestImplementation("androidx.test.ext:junit:1.1.5")
|
||||||
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
|
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
|
||||||
|
@ -4,12 +4,10 @@ import android.os.Bundle
|
|||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
import androidx.activity.compose.setContent
|
import androidx.activity.compose.setContent
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.material3.Surface
|
|
||||||
import androidx.compose.material3.Text
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
|
import com.example.labwork.button_navigation.MainScreen
|
||||||
import com.example.labwork.ui.theme.LabWorkTheme
|
import com.example.labwork.ui.theme.LabWorkTheme
|
||||||
|
|
||||||
class MainActivity : ComponentActivity() {
|
class MainActivity : ComponentActivity() {
|
||||||
@ -17,30 +15,8 @@ class MainActivity : ComponentActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContent {
|
setContent {
|
||||||
LabWorkTheme {
|
LabWorkTheme {
|
||||||
// A surface container using the 'background' color from the theme
|
MainScreen()
|
||||||
Surface(
|
|
||||||
modifier = Modifier.fillMaxSize(),
|
|
||||||
color = MaterialTheme.colorScheme.background
|
|
||||||
) {
|
|
||||||
Greeting("Android")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
fun Greeting(name: String, modifier: Modifier = Modifier) {
|
|
||||||
Text(
|
|
||||||
text = "Hello $name!",
|
|
||||||
modifier = modifier
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Preview(showBackground = true)
|
|
||||||
@Composable
|
|
||||||
fun GreetingPreview() {
|
|
||||||
LabWorkTheme {
|
|
||||||
Greeting("Android")
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.example.labwork.button_navigation
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
|
||||||
|
import androidx.compose.material.Scaffold
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.navigation.compose.rememberNavController
|
||||||
|
|
||||||
|
@SuppressLint("UnusedMaterialScaffoldPaddingParameter")
|
||||||
|
@Composable
|
||||||
|
fun MainScreen() {
|
||||||
|
val navController = rememberNavController()
|
||||||
|
Scaffold(
|
||||||
|
bottomBar = {
|
||||||
|
SlideNavigation(navController = navController)
|
||||||
|
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
SlideGraph(navHostController = navController)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.example.labwork.button_navigation
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.layout.wrapContentHeight
|
||||||
|
import androidx.compose.material.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ScreenInfo() {
|
||||||
|
Text(
|
||||||
|
modifier = Modifier.fillMaxSize().wrapContentHeight(),
|
||||||
|
text = "Тут будет главный экран..."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ScreenProfile() {
|
||||||
|
Text(
|
||||||
|
modifier = Modifier.fillMaxSize().wrapContentHeight(),
|
||||||
|
text = "Тут будет профиль экран..."
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.example.labwork.button_navigation
|
||||||
|
|
||||||
|
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.navigation.NavHostController
|
||||||
|
import androidx.navigation.compose.NavHost
|
||||||
|
import androidx.navigation.compose.composable
|
||||||
|
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun SlideGraph(
|
||||||
|
navHostController: NavHostController
|
||||||
|
) {
|
||||||
|
NavHost(navController = navHostController, startDestination = "Profile"){
|
||||||
|
composable("Profile"){
|
||||||
|
ScreenProfile()
|
||||||
|
}
|
||||||
|
composable("Info"){
|
||||||
|
ScreenInfo()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package com.example.labwork.button_navigation
|
||||||
|
|
||||||
|
import com.example.labwork.R
|
||||||
|
|
||||||
|
sealed class SlideItem(val title: String, val iconId: Int, val route: String){
|
||||||
|
object ScreenInfo: SlideItem("Информация", R.drawable.baseline_info,"Info" )
|
||||||
|
object ScreenProfile: SlideItem("Профиль", R.drawable.baseline_account_circle,"Profile" )
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package com.example.labwork.button_navigation
|
||||||
|
|
||||||
|
import androidx.compose.material.BottomNavigation
|
||||||
|
import androidx.compose.material.BottomNavigationItem
|
||||||
|
import androidx.compose.material.Icon
|
||||||
|
import androidx.compose.material.SnackbarDefaults.backgroundColor
|
||||||
|
import androidx.compose.material.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.res.painterResource
|
||||||
|
import androidx.compose.ui.unit.sp
|
||||||
|
import androidx.navigation.NavController
|
||||||
|
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun SlideNavigation(
|
||||||
|
navController: NavController
|
||||||
|
) {
|
||||||
|
val listItems = listOf(
|
||||||
|
SlideItem.ScreenInfo,
|
||||||
|
SlideItem.ScreenProfile
|
||||||
|
)
|
||||||
|
|
||||||
|
BottomNavigation(
|
||||||
|
backgroundColor = Color.White
|
||||||
|
) {
|
||||||
|
val backStackEntry by navController.currentBackStackEntryAsState()
|
||||||
|
val currentRout = backStackEntry?.destination?.route
|
||||||
|
listItems.forEach { item ->
|
||||||
|
BottomNavigationItem(
|
||||||
|
selected = currentRout == item.route,
|
||||||
|
onClick = {
|
||||||
|
navController.navigate(item.route)
|
||||||
|
},
|
||||||
|
icon = {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(id = item.iconId),
|
||||||
|
contentDescription = "Icon"
|
||||||
|
)
|
||||||
|
},
|
||||||
|
label = {
|
||||||
|
Text(
|
||||||
|
text = item.title,
|
||||||
|
fontSize = 9.sp
|
||||||
|
)
|
||||||
|
},
|
||||||
|
selectedContentColor = Color.Blue,
|
||||||
|
unselectedContentColor = Color.Gray
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
5
app/src/main/res/drawable/baseline_account_circle.xml
Normal file
5
app/src/main/res/drawable/baseline_account_circle.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<vector android:height="24dp" android:tint="#000000"
|
||||||
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,6c1.93,0 3.5,1.57 3.5,3.5S13.93,13 12,13s-3.5,-1.57 -3.5,-3.5S10.07,6 12,6zM12,20c-2.03,0 -4.43,-0.82 -6.14,-2.88C7.55,15.8 9.68,15 12,15s4.45,0.8 6.14,2.12C16.43,19.18 14.03,20 12,20z"/>
|
||||||
|
</vector>
|
5
app/src/main/res/drawable/baseline_info.xml
Normal file
5
app/src/main/res/drawable/baseline_info.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<vector android:height="24dp" android:tint="#000000"
|
||||||
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z"/>
|
||||||
|
</vector>
|
Loading…
Reference in New Issue
Block a user