Доброе!: Card( elevation = 5.dp ) Никак не хочет принимать,ошибка хоть головой об стену)),может быть в новой версии flamingo ,elevation больше нет...))?
балин потратил минут 20 чтобы это найти в документации. зашел в комменты написать о решении а тут уже есть. а ведь раньше при работе с xml этот елевейшн указывался в 1 клик мышки.
Привет,хотелось бы отдельно выразить большое спасибо тебе за контент и просьба,довести этот курс уроков до конца. Пока что нету возможности сделать подписку,но в будущем обязательно сделаю. Удачи тебе)
Я тоже не понимаю, все тупо усложнили, по моему визуальное построение проекта, было намного проще, понятнее, удобнее, напридумывали кучу всего нового, забыв о своей первой цели и задачи, походу Андроид студио скоро уступит какому то новобранцу на рынке 😊 Даже Пайтон и тот задумывается о визуализации построение проектов, этот Котлин с Джекпаст Кампосе просто идёт в 19 век, а нечего что на старте наоборот стремились к ХМЛ разметке, понятной для простого пользователя, а не расписание команд понятные только опытным пользователям 😅
@@footballcompass3898 да ппц. сидишь и думаешь что изучать. неужели им было трудно прикрутить к этому всему визуальный редактор как в xml чтобы вся эта чушь просто генерировалась как раньше
@@footballcompass3898 усложнили?) переучишься на компос и со временем поймешь кайф, он быстрее, меньше ошибок, быстрее пишется и легче форматируется дополняется и т.д
Когда я в первые начинал задумываться о том как пишут приложения на телефон то примерно вот так вот и представлял. Но когда увидел использование xml понял, что я был наивен и так просто ничего не бывает. А тут на тебе. Бывает.
Спасибо за урок!) Наконец то отвыкаю от xml, но и есть многому учится в Jetpack, хоть у меня есть опыт с Flutter как декларативная разработка, но пока Jetpack кажется труднее)
Сергей как всегда здорово. А можно в этом проекте добавить допустим ...№ телефона чтобы при нажатии выходил Dial. Было бы здорово в качестве примера и для знаний конечно же.
Классно!!! Сергей спасибо. После твоих уроков решил перейти на compose, но много чего не ясно. Главное не понятно где писать саму логику? Ведь все эти "виджеты" они как бы должны быть слепые, просто следить за изменением данных. Очень много примеров с одной или двумя кнопками, нажимаешь их и значение увеличивается или уменьшается. И негде нет более сложного. Например нажатие на 5 или 6 кнопок (если мы например ждём нажатия определенных 2 кнопок). Нет таких примеров. Надеюсь ты когда дойдешь подробно все расскажешь. Ждём продолжения!!!
Насчет последовательности задания свойств компонента и правда , если паддинг поставить , после клипа, то картинка будет будет не круглой, а многоугольной формы
пожалуй, из всех уроков, которые удаётся найти, у вас самые понятные...очень хотелось бы ещё посмотреть на более актуальную реализацию работы с gps...а ещё, будучи из веба, не очень понятно, почему вдруг сделали в jetpack compose padding отступами снаружи, а не внутри, или я чего-то не понял...
Спасибо очень подробно объяснение. Elevation больше похоже на box shadow. Теперь буду думать, как уже существующий на tilewind css мобильный дизайн перенести) Я как понял можно перенести повторяющиеся padding, margin и color в XML в папку values? И получить что то типа less, sass) А можно из интернета путь на картинку указать или она не загрузится?
Всем привет, почему постоянно выдаёт ошибку вот в этом месте Type mismatch: inferred type is Dp but CardElevation was expected elevation = 5.dp когда поменял на это то вроде заработало elevation = CardDefaults.cardElevation( defaultElevation = 5.dp ) но правильно ли это?
видимо в новых версиях контейнер Box() по умолчанию не растягивается на всю ширину. чтобы увидеть его цвет добавил ему fillmaxwidth. изза этого различия когда вы укажете в box выравнивание элементов по центру то ничего не изменится. и возникает вопрос для чего здесь этот Box? наверное можно было все это указать и модификаторах Card
Box не может не растягиваться так как это один из разновидностей контейнера и все они растягиваются, где то у вас ошибка. Это уроки для начинающих и Box тут только чтобы показать его использование, конечно можно просто Card использовать в реальном проекте, но это уроки по это у моя задача просто показать как что работает
@@NecoRuChannel ну еще раз проверил. поставил цвет бэкграунда именно бокса красный. запустил. получил список карточек в которых красный фон имеет картинка и текст. конечно можно было бы скрины всего этого делать потом куда то выложить и тд. но лучше некст урок поделаю
Хотелось бы понять, а какая роль у Box'a если у нас и так все находится в строке? Если его убрать ничего не меняется... Так же можно убрать и Card, если не нужны тени и закругления?
Все верно, но это же урок и я показываю какие элементы есть и как они работают, тут не смысл в том что в данном примере без Box или без Card нельзя создать такую разметку, смысл для меня это показать все эти элементы и рассказать о них. Я рассказал на минуте 5:00 про Box как он работает, а ты уже зная все эти элементы создаешь разметку используя только те что тебе нужны для твоих целей.
Привет.Спасибо за отличный урок. У меня вопрос. Почему то Box у меня не становится во всю ширину, а только wrap_content. Хотя код один в один. Что бы было с цветами, сё как у Сергея то мне нужно fillMaxWidth() для Box, а Сергею не нужно. Странно
А будет ли продолжение темы "Сколько можно заработать на простом приложении"? По-моему никакие итоги не были подведены по данной теме. И, если будут, то когда?
Привет, конечно будет, просто занят ьыл а там нужно собрать подходящие списки со словами все подготовить и.т.д Сегодня буду все подготавливать, если до вечера не успею записать видео то завтра с утра. Тема еще не закончена, нужно доделать приложение опубликовать и показать доход, а после уже поговорим о том что да как
Добрый день. Не работает параметр elevation = 5.dp в Card ( modifier = Modifier .fillMaxWidth() // По всей ширине экрана .padding(10.dp) // отступ .background(Color.Red), // Цвет фона shape = RoundedCornerShape(15.dp), // закргуление карточки elevation = 5.dp ) просит создать функцию Card
На 16:15 Почему вложенный Box занимает всю Card? Разве он не должен занять только то пространство, которое занимают дочерние элементы? Попробовал покопать в этом направлении. Например, если сделать composable-fun Box(Modifier.fillMaxSize()){ Box(Modifier.background(color = Color.Red)){ Text("ALOHA") } } То в красный окрашивается только бекграунд текстовки, но судя по логике, что представлена в уроке покраситься в красный должен весь экран. Почему так? Выглядит как противоречие
Можно, просто в первой версии видео что бы показать что такое box так как на первых видео это не показал решил его использовать, в итоге видео перезаписал и сделал подругому где box не нужен но я все равно его добавил что бы просто использовать и показать как он работает.
Не могу разобраться что пишется после точки, что пишется в скобках и что после "равно". Например, почему не modifier.Modifier()fillMaxSize=contentAlignment, или что-то в этом роде. В Kotlin понятно = это присваивание, : это наследование, () это параметр, [точка] это дальше по дереву. А в @Composable не могу понять
Удерживаешь ctrl и наводишь курсор на Modifire увидишь что это, если понимаешь что это в котлин то поймешь и тут. В compose есть аргументы которые передаешь в compose функцию так вот там пишешь название аргумента например modifire и передаешь туда Modifire указывая = прям как в data class в котлин с нужными настройками (грубо говаря)
@@NecoRuChannel Спасибо, не знал про "Удерживаешь ctrl и наводишь курсор на..." - удобно. Всегда делал Ctrl+click или наводил и задерживал курсор на названии
Можно, но большинство готовых проектов подсказок и решений есть на xml а композ намного меньше. Плюс если на работу устроишься и тебе дадут проект на xml несможешь работать над ним
Не могу понять что делать. у меня Image красным цветом. bИ вообще много функций красным. Прихоидтся жать на них альт+ент и вручную выирать что это андроид, или компос
Ничего необычного. Если не хочешь импортировать вручную, то при написании имени, когда студия предлагает автодополнение, нажимай на таб (ну или выбирай мышкой, как тебе удобно), так оно импортирует автоматически. Собственно автор видео так и делает. Может для тебя это уже поздно, но другим наверное полезно будет
После того как написал: "painter =" перед Image(. painter красным выделил Studio и ошибка: "Named arguments are not allowed for non-Kotlin functions" "Cannot find a parameter with this name: painter" :(. Делаю в один в один по примеру. Как исправить можно ? Спасибо всем заранее.
Привет, покажи строчку как написал, и если один в один сделал то возможно не тот Image импортирован. Это можно посмотреть вверху там где import. Покажи что там у тебя
Привет, крестик есть но он вверху слева на окне эмулятора, возле названия эмулятора. Открываешь окно эмулятора там эмулятор а вверху этого окна слева есть как бы вкладка как в браузере и там крестик и название
поправлю про бест практику. никогда не делайте Column в Row как и наоборот свободной величины. растяните именно их на всего родителя и уже в нем выстраивайте поведение детей (Single responsibility)
наверно хотите пояснений почему. Лучшая практика делать большие блоки на маленькие при том чем проще блоки тем лучше. при свободной величине суммарная картинка блоков получается неправильной геометрии. при растяжении блоков-детей до родителя получаются аккуратные прямоугольники которые хорошо читабельны и предсказуемые
В данном случае да, я его использовал просто что бы показать что это такое, но его можно убрать из данного примера если нам все элементы не нужно отцентровать или куда то переместить.
Или вот: class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { AnyText() } } } @Composable fun AnyText() { Text("my first text line", Color = Color.Unspecified) } Выдает в Problems: None of the following functions can be called with the arguments supplied Лезу в документацию, там в Text.kt: @Composable fun Text( ... color: Color = Color.Unspecified, ...) Почему ошибка? Заранее спасибо
Доброе!:
Card(
elevation = 5.dp
)
Никак не хочет принимать,ошибка хоть головой об стену)),может быть в новой версии flamingo ,elevation больше нет...))?
Это не из за Flamingo а из за того что по умолчанию идет Material3 и в нем выглядит так: elevation = CardDefaults.cardElevation(5.dp)
То есть передаем не просто число а CardElevation есть CardDefaults класс через который передаем значения
@@NecoRuChannel О спасибо! Выручили..и этим только они усложнили..
@@Aid1366 у них это теперь в приоритете, всё усложнять 😅
балин потратил минут 20 чтобы это найти в документации. зашел в комменты написать о решении а тут уже есть. а ведь раньше при работе с xml этот елевейшн указывался в 1 клик мышки.
Спасибо, урок интересный и доступный.
мужик, ты идеально все объясняешь. спасибо огромное!🤝
Большое спасибо за уроки! Комментарий в поддержку ! :)
Всё очень понятно и легко заходит! Большое спасибо!
Коммент ради продвижения!) Спасибо за видео. Все очень грамотно и подробно объясняется!)
Все понятно, спасибо за видео)
Спасибо за урок ! Все просто и понятно. Ждём следующий.
Это очень крутой и понятный урок. Пожалуйста продолжайте, вы делаете очень важное и полезное дело! Спасибо вам огромное!
Отличный урок. Все понял с первого раза! Большое спасибо!
Спасибо Сергей. Заработало. Очень интересно посмотреть будущие ролики про Jetpack compose.
Отлично!
Спосибо Сергей . Мы очень рады.Best teacher
Большое спасибо! Отличного дня!
Очень классно) Спасибо за выпуск!)) Ждём так же продолжение выпусков про заработок на простом приложении)
спасибо тебе большое, отличный курс
Отличное объяснение! Надеюсь, дальше всё будет так же подробно. Спасибо вам!
Все очень понятно, спасибо большое!!!
лучший в мире блогер и педагог! спасибо огромное
Привет,хотелось бы отдельно выразить большое спасибо тебе за контент и просьба,довести этот курс уроков до конца.
Пока что нету возможности сделать подписку,но в будущем обязательно сделаю.
Удачи тебе)
Спасибо большое, этот курс обязательно доведу до конца!
Ох, уж этот UI... Столько хлопот - и только для того, чтобы глазу пользователя приятно было смотреть :)
Я тоже не понимаю, все тупо усложнили, по моему визуальное построение проекта, было намного проще, понятнее, удобнее, напридумывали кучу всего нового, забыв о своей первой цели и задачи, походу Андроид студио скоро уступит какому то новобранцу на рынке 😊
Даже Пайтон и тот задумывается о визуализации построение проектов, этот Котлин с Джекпаст Кампосе просто идёт в 19 век, а нечего что на старте наоборот стремились к ХМЛ разметке, понятной для простого пользователя, а не расписание команд понятные только опытным пользователям 😅
@@footballcompass3898 да ппц. сидишь и думаешь что изучать. неужели им было трудно прикрутить к этому всему визуальный редактор как в xml чтобы вся эта чушь просто генерировалась как раньше
@@footballcompass3898 усложнили?) переучишься на компос и со временем поймешь кайф, он быстрее, меньше ошибок, быстрее пишется и легче форматируется дополняется и т.д
Спасибо за урок, очень интересно и просто, хотелось бы в дальнейшем рассмотреть работу с фрагментами
Спасибо за подробные объяснения, это очень помогает
Спасибо Настя!
Когда я в первые начинал задумываться о том как пишут приложения на телефон то примерно вот так вот и представлял. Но когда увидел использование xml понял, что я был наивен и так просто ничего не бывает. А тут на тебе. Бывает.
Возможно xml изначально задумывался как временное решение т.к. его не нужно было изобретать.
Отличный канал, все предельно понятно
Спасибо за урок!) Наконец то отвыкаю от xml, но и есть многому учится в Jetpack, хоть у меня есть опыт с Flutter как декларативная разработка, но пока Jetpack кажется труднее)
Спасибо за этот контент
Лучший, благодарю!
Большое спасибо за видео. Очень полезно и понятно.
Спасибо!!! Очень дохочего объясняет.
Спасибо. Сергей молодец.
Спасибо за урок
Сергей как всегда здорово. А можно в этом проекте добавить допустим ...№ телефона чтобы при нажатии выходил Dial. Было бы здорово в качестве примера и для знаний конечно же.
Классно!!! Сергей спасибо. После твоих уроков решил перейти на compose, но много чего не ясно. Главное не понятно где писать саму логику? Ведь все эти "виджеты" они как бы должны быть слепые, просто следить за изменением данных. Очень много примеров с одной или двумя кнопками, нажимаешь их и значение увеличивается или уменьшается. И негде нет более сложного. Например нажатие на 5 или 6 кнопок (если мы например ждём нажатия определенных 2 кнопок). Нет таких примеров. Надеюсь ты когда дойдешь подробно все расскажешь.
Ждём продолжения!!!
В том и есть прелесть Compose что можно логику прямо в виджете писать. Но лучше писать в отдельных функциях а функции уже передавать в виджеты
Насчет последовательности задания свойств компонента и правда , если паддинг поставить , после клипа, то картинка будет будет не круглой, а многоугольной формы
Просто спасибо!
добрый вечер Сергей подскажите как пользоваться эмпти активити в данной версии андроид студио?
Спасибо!!!
Давайте делиться листингом кода по уроку в комментах) и для нас полезная практика, и автору канала продвижение:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Card
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Column {
ListItem(name = "Harry Potter",profession ="Wizard" )
ListItem(name = "Harry Potter",profession ="Wizard" )
ListItem(name = "Harry Potter",profession ="Wizard" )
ListItem(name = "Harry Potter",profession ="Wizard" )
ListItem(name = "Harry Potter",profession ="Wizard" )
ListItem(name = "Harry Potter",profession ="Wizard" )
}
}
}
}
@Composable
private fun ListItem(name:String,profession:String){
Card (
modifier= Modifier
.fillMaxWidth()
.padding(10.dp),
shape = RoundedCornerShape(15.dp),
elevation = 5.dp
){
Box {
Row(verticalAlignment = Alignment.CenterVertically) {
Image(
painter = painterResource(R.drawable.harrypotter),
contentDescription ="image",
contentScale = ContentScale.Crop,
modifier = Modifier
.padding(5.dp)
.size(64.dp)
.clip(CircleShape)
)
Column(
modifier = Modifier.padding(start = 16.dp)
) {
Text(text = name)
Text(text = profession)
}
}
}
}
}
пожалуй, из всех уроков, которые удаётся найти, у вас самые понятные...очень хотелось бы ещё посмотреть на более актуальную реализацию работы с gps...а ещё, будучи из веба, не очень понятно, почему вдруг сделали в jetpack compose padding отступами снаружи, а не внутри, или я чего-то не понял...
Что-то очень тяжко идет компоуз...
Не думал, что завязну не на короутинах или каком-нибудь DI, а на UI части.
Спасибо очень подробно объяснение. Elevation больше похоже на box shadow. Теперь буду думать, как уже существующий на tilewind css мобильный дизайн перенести) Я как понял можно перенести повторяющиеся padding, margin и color в XML в папку values? И получить что то типа less, sass) А можно из интернета путь на картинку указать или она не загрузится?
Момент небольшой, elevation = 5.dp работает только с material, в material3 как-то иначе нужно писать.
elevation = CardDefaults.cardElevation(defaultElevation = 5.dp)
Всем привет,
почему постоянно выдаёт ошибку вот в этом месте
Type mismatch: inferred type is Dp but CardElevation was expected
elevation = 5.dp
когда поменял на это то вроде заработало
elevation = CardDefaults.cardElevation(
defaultElevation = 5.dp
)
но правильно ли это?
У меня Box почему то не занимает всю ширину, а занимает как Row до крайней буквы
видимо в новых версиях контейнер Box() по умолчанию не растягивается на всю ширину. чтобы увидеть его цвет добавил ему fillmaxwidth. изза этого различия когда вы укажете в box выравнивание элементов по центру то ничего не изменится. и возникает вопрос для чего здесь этот Box? наверное можно было все это указать и модификаторах Card
Box не может не растягиваться так как это один из разновидностей контейнера и все они растягиваются, где то у вас ошибка. Это уроки для начинающих и Box тут только чтобы показать его использование, конечно можно просто Card использовать в реальном проекте, но это уроки по это у моя задача просто показать как что работает
@@NecoRuChannel ну еще раз проверил. поставил цвет бэкграунда именно бокса красный. запустил. получил список карточек в которых красный фон имеет картинка и текст. конечно можно было бы скрины всего этого делать потом куда то выложить и тд. но лучше некст урок поделаю
Не уловил момент, когда Card() перестал быть на весь экран
там перескочило видео вроде. FillMaxSize превратился в FillMaxWidth. Высота стала равна высоте контента.
Хотелось бы понять, а какая роль у Box'a если у нас и так все находится в строке? Если его убрать ничего не меняется...
Так же можно убрать и Card, если не нужны тени и закругления?
Все верно, но это же урок и я показываю какие элементы есть и как они работают, тут не смысл в том что в данном примере без Box или без Card нельзя создать такую разметку, смысл для меня это показать все эти элементы и рассказать о них. Я рассказал на минуте 5:00 про Box как он работает, а ты уже зная все эти элементы создаешь разметку используя только те что тебе нужны для твоих целей.
Привет.Спасибо за отличный урок. У меня вопрос. Почему то Box у меня не становится во всю ширину, а только wrap_content. Хотя код один в один. Что бы было с цветами, сё как у Сергея то мне нужно fillMaxWidth() для Box, а Сергею не нужно. Странно
За 2 года видимо обнов наделали ,тоже задался таким вопросом
Как можно сделать, что бы везде были разные фотографии?
А будет ли продолжение темы "Сколько можно заработать на простом приложении"? По-моему никакие итоги не были подведены по данной теме. И, если будут, то когда?
Привет, конечно будет, просто занят ьыл а там нужно собрать подходящие списки со словами все подготовить и.т.д Сегодня буду все подготавливать, если до вечера не успею записать видео то завтра с утра. Тема еще не закончена, нужно доделать приложение опубликовать и показать доход, а после уже поговорим о том что да как
@@NecoRuChannel понял! Спасибо! Буду ждать видео.
Правда Алексей Думаю что Сергей сделает продолжению
@@NecoRuChannel Ti molodets .Brat super klass.
спасибо
Здравствуйте. Подскажите, почему названия @Composable функций с большой буквы? Разве с большой буквы не названия классов? Спасибо.
В compose свои правила, названия функций Composable пишутся с большой
Спасибо за урок! Подскажите, почему для элемента Box не работает modifier = Modifier.background(Color.Green) ? Версия Android studio 2024.1.1
Помогло такое решение: добавить .fillMaxWidth(), т.е. вот так сработало: modifier = Modifier.fillMaxWidth().background(Color.Green)
Добрый день.
Не работает параметр elevation = 5.dp в
Card (
modifier = Modifier
.fillMaxWidth() // По всей ширине экрана
.padding(10.dp) // отступ
.background(Color.Red), // Цвет фона
shape = RoundedCornerShape(15.dp), // закргуление карточки
elevation = 5.dp
)
просит создать функцию Card
Привет, ответ в закрепленном комментарии
@@NecoRuChannel спасибо!
А как будет работать библиотека Subsampling Scale Image View в рамках Compose?
Здравствуйте. Застрял на elevation = 5.dp, 5.dp подчеркивает красным. Не могу понять в чем проблема.
а ты запятую поставил? Что именно подчеркнуто крассным?
@@NecoRuChannel У меня также. на elevation = 5.dp после 5 стоит точка, но подчеркивается красным и предлагает создать функцию Card
@@АртемБуняев-э6к elevation = CardDefaults.cardElevation(5.dp)
@@НиколайТабашин Можно узнать где нашли такое решение ?🤔
На 16:15 Почему вложенный Box занимает всю Card?
Разве он не должен занять только то пространство, которое занимают дочерние элементы?
Попробовал покопать в этом направлении.
Например, если сделать composable-fun
Box(Modifier.fillMaxSize()){
Box(Modifier.background(color = Color.Red)){
Text("ALOHA")
}
}
То в красный окрашивается только бекграунд текстовки, но судя по логике, что представлена в уроке покраситься в красный должен весь экран.
Почему так?
Выглядит как противоречие
Я вложил в Box Modifier строку .fillMaxWidth() и получилось как у Сергея
А зачем нужен box? Почему сразу в row нельзя поместить?
Можно, просто в первой версии видео что бы показать что такое box так как на первых видео это не показал решил его использовать, в итоге видео перезаписал и сделал подругому где box не нужен но я все равно его добавил что бы просто использовать и показать как он работает.
Не могу разобраться что пишется после точки, что пишется в скобках и что после "равно". Например, почему не modifier.Modifier()fillMaxSize=contentAlignment, или что-то в этом роде.
В Kotlin понятно = это присваивание, : это наследование, () это параметр, [точка] это дальше по дереву. А в @Composable не могу понять
Удерживаешь ctrl и наводишь курсор на Modifire увидишь что это, если понимаешь что это в котлин то поймешь и тут. В compose есть аргументы которые передаешь в compose функцию так вот там пишешь название аргумента например modifire и передаешь туда Modifire указывая = прям как в data class в котлин с нужными настройками (грубо говаря)
@@NecoRuChannel Спасибо, не знал про "Удерживаешь ctrl и наводишь курсор на..." - удобно. Всегда делал Ctrl+click или наводил и задерживал курсор на названии
Не получается создать Image подчеркивает красным
Возможно не то импортировано или вобще не импортировано. Когда добавляешь смотри чтоб было из пакета compose
Спасибо за выпуск)). Не пойму как поменять картинку, например по нажатию кнопки загрузить другую картинку...
До этого мы еще не дошли)) Покажу на следующих уроках
С elevation выдаёт ошибку, без него всё работает. Скорее всего, опять какие то изменения в Android
В Material 3 там немного по другому
@@NecoRuChannel Разобрался, спасибо.
спасибо
когда следующий видео)
Привет, сегодня к вечеру
Спасибо большое! Compose нравиться намного больше чем xml! можно ли учить только его или без xml никак?
Можно, но большинство готовых проектов подсказок и решений есть на xml а композ намного меньше. Плюс если на работу устроишься и тебе дадут проект на xml несможешь работать над ним
@@NecoRuChannel спасибо посмотрю этот курс и возьмусь дальше учить xml
Comment for rising
Не могу понять что делать. у меня Image красным цветом. bИ вообще много функций красным. Прихоидтся жать на них альт+ент и вручную выирать что это андроид, или компос
Ничего необычного. Если не хочешь импортировать вручную, то при написании имени, когда студия предлагает автодополнение, нажимай на таб (ну или выбирай мышкой, как тебе удобно), так оно импортирует автоматически. Собственно автор видео так и делает.
Может для тебя это уже поздно, но другим наверное полезно будет
@@kavelquu да, стоило начать с серий про котлин)
Вопрос, почему название функции с большой буквы?
Так решили разработчики различать Composable от простой функции
В этом композе бардак какой-то. Одни параметры находятся в модифаере, остальные - просто насыпом в аргументах вьюхи. Где логика??
Вот вот. Поэтому я себе специально скачал Android Studio 2022 и пишу по нормальному когда код разделен с версткой + Java.
После того как написал: "painter =" перед Image(. painter красным выделил Studio и ошибка: "Named arguments are not allowed for non-Kotlin functions" "Cannot find a parameter with this name: painter" :(. Делаю в один в один по примеру. Как исправить можно ? Спасибо всем заранее.
Привет, покажи строчку как написал, и если один в один сделал то возможно не тот Image импортирован. Это можно посмотреть вверху там где import. Покажи что там у тебя
Может, я бегу впереди лошадей, но, случаем, конструктора нет для этого?
Я использую Column и всё элементы поочерёдно уменьшается
В смысле?
Господа, кто знает как в Android Studio 2021 выключить эмулятор? Эти гении убрали кнопку Stop из AVD Manager и крестик в окне эмулятора.
Привет, крестик есть но он вверху слева на окне эмулятора, возле названия эмулятора. Открываешь окно эмулятора там эмулятор а вверху этого окна слева есть как бы вкладка как в браузере и там крестик и название
@@NecoRuChannel Вон оно как😆. Спасибо большое!
@@bachateros934 Я и сам после обновления 2 часа искал))
поправлю про бест практику. никогда не делайте Column в Row как и наоборот свободной величины. растяните именно их на всего родителя и уже в нем выстраивайте поведение детей (Single responsibility)
наверно хотите пояснений почему. Лучшая практика делать большие блоки на маленькие при том чем проще блоки тем лучше. при свободной величине суммарная картинка блоков получается неправильной геометрии. при растяжении блоков-детей до родителя получаются аккуратные прямоугольники которые хорошо читабельны и предсказуемые
и того box оказался бесполезным=_=
В данном случае да, я его использовал просто что бы показать что это такое, но его можно убрать из данного примера если нам все элементы не нужно отцентровать или куда то переместить.
Или вот:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
AnyText()
}
}
}
@Composable
fun AnyText() {
Text("my first text line", Color = Color.Unspecified)
}
Выдает в Problems: None of the following functions can be called with the arguments supplied
Лезу в документацию, там в Text.kt:
@Composable
fun Text(
...
color: Color = Color.Unspecified,
...)
Почему ошибка? Заранее спасибо
У тебя color с большой буквы написан Color = Color.Unspecified() нужно color =
@@NecoRuChannel Спасибо. 🙂С большой буквы