На моем экране Compose, который я передаю фрагменту XML. < /p>
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val activity = requireActivity() as CoreMainActivity
composeView.setContent {
LanguageScreen(
languageViewModel = languageViewModel
)
}
}
< /code>
У меня есть JetPack Compose Top Bar в каркасе, и я имею текстовое поле в заголовке, подобном этому < /p>
Scaffold(
modifier = Modifier.fillMaxSize(),
topBar = {
SearchTopAppBar(
title = "My App",
onSearchClick = { isSearchActive = true },
onBackClick = {
if (isSearchActive) {
isSearchActive = false
searchText = ""
}
},
isSearchActive = isSearchActive,
searchText = searchText,
onSearchTextChanged = { searchText = it },
onSearchTextSubmit = {
// Handle search submit
}
)
}
) { innerPadding ->
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun SearchTopAppBar(
title: String,
onSearchClick: () -> Unit,
onBackClick: () -> Unit,
isSearchActive: Boolean,
searchText: String,
onSearchTextChanged: (String) -> Unit,
onSearchTextSubmit: () -> Unit
) {
TopAppBar(
title = {
if (isSearchActive) {
TextField(
value = searchText,
onValueChange = onSearchTextChanged,
modifier = Modifier.fillMaxWidth(),
placeholder = { Text("Search...") },
singleLine = true,
colors = TextFieldDefaults.colors(
focusedIndicatorColor = Color.Transparent,
unfocusedIndicatorColor = Color.Transparent,
disabledIndicatorColor = Color.Transparent,
focusedContainerColor = Color.Transparent,
unfocusedContainerColor = Color.Transparent
),
keyboardOptions = KeyboardOptions(
imeAction = ImeAction.Search
),
keyboardActions = KeyboardActions(
onSearch = { onSearchTextSubmit() }
)
)
} else {
Text(text = title)
}
},
navigationIcon = {
IconButton(onClick = onBackClick) {
Icon(
imageVector = if (isSearchActive) Icons.Default.ArrowBack else Icons.Default.Close,
contentDescription = "Back"
)
}
},
actions = {
if (!isSearchActive) {
IconButton(onClick = onSearchClick) {
Icon(
imageVector = Icons.Default.Search,
contentDescription = "Search"
)
}
}
},
colors = TopAppBarDefaults.topAppBarColors(
containerColor = MaterialTheme.colorScheme.primary,
titleContentColor = MaterialTheme.colorScheme.onPrimary,
navigationIconContentColor = MaterialTheme.colorScheme.onPrimary,
actionIconContentColor = MaterialTheme.colorScheme.onPrimary
)
)
}
< /code>
Теперь есть одна проблема, которую моя панель заголовка в порядке, пока я не открываю клавиатуру из текстового поля. Когда клавиатура откроется, она сдвигает всю верхнюю панель приложений вниз. Как я могу предотвратить это. < /p>
Пока я пытался добавить < /p>
Scaffold(
modifier = Modifier
.fillMaxSize()
.windowInsetsPadding(WindowInsets.statusBars)
)
< /code>
вместо того, чтобы простираться на верхнюю панель приложений внизу, теперь вверху белый разрыв.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -whole-top
Вставка Textfield в Top App Bar ⇐ Android
Форум для тех, кто программирует под Android
1739104735
Anonymous
На моем экране Compose, который я передаю фрагменту XML. < /p>
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val activity = requireActivity() as CoreMainActivity
composeView.setContent {
LanguageScreen(
languageViewModel = languageViewModel
)
}
}
< /code>
У меня есть JetPack Compose Top Bar в каркасе, и я имею текстовое поле в заголовке, подобном этому < /p>
Scaffold(
modifier = Modifier.fillMaxSize(),
topBar = {
SearchTopAppBar(
title = "My App",
onSearchClick = { isSearchActive = true },
onBackClick = {
if (isSearchActive) {
isSearchActive = false
searchText = ""
}
},
isSearchActive = isSearchActive,
searchText = searchText,
onSearchTextChanged = { searchText = it },
onSearchTextSubmit = {
// Handle search submit
}
)
}
) { innerPadding ->
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun SearchTopAppBar(
title: String,
onSearchClick: () -> Unit,
onBackClick: () -> Unit,
isSearchActive: Boolean,
searchText: String,
onSearchTextChanged: (String) -> Unit,
onSearchTextSubmit: () -> Unit
) {
TopAppBar(
title = {
if (isSearchActive) {
TextField(
value = searchText,
onValueChange = onSearchTextChanged,
modifier = Modifier.fillMaxWidth(),
placeholder = { Text("Search...") },
singleLine = true,
colors = TextFieldDefaults.colors(
focusedIndicatorColor = Color.Transparent,
unfocusedIndicatorColor = Color.Transparent,
disabledIndicatorColor = Color.Transparent,
focusedContainerColor = Color.Transparent,
unfocusedContainerColor = Color.Transparent
),
keyboardOptions = KeyboardOptions(
imeAction = ImeAction.Search
),
keyboardActions = KeyboardActions(
onSearch = { onSearchTextSubmit() }
)
)
} else {
Text(text = title)
}
},
navigationIcon = {
IconButton(onClick = onBackClick) {
Icon(
imageVector = if (isSearchActive) Icons.Default.ArrowBack else Icons.Default.Close,
contentDescription = "Back"
)
}
},
actions = {
if (!isSearchActive) {
IconButton(onClick = onSearchClick) {
Icon(
imageVector = Icons.Default.Search,
contentDescription = "Search"
)
}
}
},
colors = TopAppBarDefaults.topAppBarColors(
containerColor = MaterialTheme.colorScheme.primary,
titleContentColor = MaterialTheme.colorScheme.onPrimary,
navigationIconContentColor = MaterialTheme.colorScheme.onPrimary,
actionIconContentColor = MaterialTheme.colorScheme.onPrimary
)
)
}
< /code>
Теперь есть одна проблема, которую моя панель заголовка в порядке, пока я не открываю клавиатуру из текстового поля. Когда клавиатура откроется, она сдвигает всю верхнюю панель приложений вниз. Как я могу предотвратить это. < /p>
Пока я пытался добавить < /p>
Scaffold(
modifier = Modifier
.fillMaxSize()
.windowInsetsPadding(WindowInsets.statusBars)
)
< /code>
вместо того, чтобы простираться на верхнюю панель приложений внизу, теперь вверху белый разрыв.
Подробнее здесь: [url]https://stackoverflow.com/questions/79424879/inserting-textfield-in-top-app-bar-title-in-jetpack-compose-shifts-the-whole-top[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия