Я пытаюсь программно изменить поля линейного макета в Kotlin, как показано ниже. Но приложение вылетает, как только я нажимаю на страницу. Во время сборки ошибок нет.
Я искал здесь и не смог найти рабочего решения. Надеюсь получить здесь ответ. Спасибо!
class SettingsFragment : Fragment() {
private lateinit var linearLayout: LinearLayout
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_settings, container, false)
linearLayout = view.findViewById(R.id.myLinearLayout)
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
adjustMarginsBasedOnTime()
}
private fun adjustMarginsBasedOnTime() {
val calendar = Calendar.getInstance()
val currentHour = calendar.get(Calendar.HOUR_OF_DAY)
val marginStart: Int
val marginEnd: Int
val marginTop: Int
val marginBottom: Int
when (currentHour) {
in 6..11 -> { // Morning (6 AM - 11 AM)
marginStart = resources.getDimensionPixelSize(R.dimen.margin_morning_start)
marginEnd = resources.getDimensionPixelSize(R.dimen.margin_morning_end)
marginTop = resources.getDimensionPixelSize(R.dimen.margin_morning_top)
marginBottom = resources.getDimensionPixelSize(R.dimen.margin_morning_bottom)
}
in 12..17 -> { // Afternoon (12 PM - 5 PM)
marginStart = resources.getDimensionPixelSize(R.dimen.margin_afternoon_start)
marginEnd = resources.getDimensionPixelSize(R.dimen.margin_afternoon_end)
marginTop = resources.getDimensionPixelSize(R.dimen.margin_afternoon_top)
marginBottom = resources.getDimensionPixelSize(R.dimen.margin_afternoon_bottom)
}
in 18..23 -> { // Evening/Night (6 PM - 5 AM)
marginStart = resources.getDimensionPixelSize(R.dimen.margin_evening_start)
marginEnd = resources.getDimensionPixelSize(R.dimen.margin_evening_end)
marginTop = resources.getDimensionPixelSize(R.dimen.margin_evening_top)
marginBottom = resources.getDimensionPixelSize(R.dimen.margin_evening_bottom)
}
else -> { // Should not happen, but a default case
marginStart = resources.getDimensionPixelSize(R.dimen.default_margin)
marginEnd = resources.getDimensionPixelSize(R.dimen.default_margin)
marginTop = resources.getDimensionPixelSize(R.dimen.default_margin)
marginBottom = resources.getDimensionPixelSize(R.dimen.default_margin)
}
}
linearLayout.updateLayoutParams {
setMargins(marginStart, marginTop, marginEnd, marginBottom)
}
}
}
Ниже находится фрагмент_settings.xml
Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-androi
Изменение поля линейного макета во фрагменте в разное время суток в Android Kotlin ⇐ Android
Форум для тех, кто программирует под Android
1736377652
Anonymous
Я пытаюсь программно изменить поля линейного макета в Kotlin, как показано ниже. Но приложение вылетает, как только я нажимаю на страницу. Во время сборки ошибок нет.
Я искал здесь и не смог найти рабочего решения. Надеюсь получить здесь ответ. Спасибо!
class SettingsFragment : Fragment() {
private lateinit var linearLayout: LinearLayout
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_settings, container, false)
linearLayout = view.findViewById(R.id.myLinearLayout)
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
adjustMarginsBasedOnTime()
}
private fun adjustMarginsBasedOnTime() {
val calendar = Calendar.getInstance()
val currentHour = calendar.get(Calendar.HOUR_OF_DAY)
val marginStart: Int
val marginEnd: Int
val marginTop: Int
val marginBottom: Int
when (currentHour) {
in 6..11 -> { // Morning (6 AM - 11 AM)
marginStart = resources.getDimensionPixelSize(R.dimen.margin_morning_start)
marginEnd = resources.getDimensionPixelSize(R.dimen.margin_morning_end)
marginTop = resources.getDimensionPixelSize(R.dimen.margin_morning_top)
marginBottom = resources.getDimensionPixelSize(R.dimen.margin_morning_bottom)
}
in 12..17 -> { // Afternoon (12 PM - 5 PM)
marginStart = resources.getDimensionPixelSize(R.dimen.margin_afternoon_start)
marginEnd = resources.getDimensionPixelSize(R.dimen.margin_afternoon_end)
marginTop = resources.getDimensionPixelSize(R.dimen.margin_afternoon_top)
marginBottom = resources.getDimensionPixelSize(R.dimen.margin_afternoon_bottom)
}
in 18..23 -> { // Evening/Night (6 PM - 5 AM)
marginStart = resources.getDimensionPixelSize(R.dimen.margin_evening_start)
marginEnd = resources.getDimensionPixelSize(R.dimen.margin_evening_end)
marginTop = resources.getDimensionPixelSize(R.dimen.margin_evening_top)
marginBottom = resources.getDimensionPixelSize(R.dimen.margin_evening_bottom)
}
else -> { // Should not happen, but a default case
marginStart = resources.getDimensionPixelSize(R.dimen.default_margin)
marginEnd = resources.getDimensionPixelSize(R.dimen.default_margin)
marginTop = resources.getDimensionPixelSize(R.dimen.default_margin)
marginBottom = resources.getDimensionPixelSize(R.dimen.default_margin)
}
}
linearLayout.updateLayoutParams {
setMargins(marginStart, marginTop, marginEnd, marginBottom)
}
}
}
Ниже находится фрагмент_settings.xml
Подробнее здесь: [url]https://stackoverflow.com/questions/79340960/change-linear-layout-margin-in-a-fragment-at-different-time-of-the-day-in-androi[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия