Загрузка данных
package com.example.myapplication // замените на ваш пакет
import android.os.Bundle
import android.view.ViewGroup
import android.widget.Button
import android.widget.EditText
import android.widget.LinearLayout
import android.widget.ScrollView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Создаём главный контейнер (ScrollView)
val scrollView = ScrollView(this).apply {
layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
}
// Создаём LinearLayout для вертикального расположения элементов
val linearLayout = LinearLayout(this).apply {
layoutParams = ScrollView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
orientation = LinearLayout.VERTICAL
setPadding(64, 64, 64, 64) // dp в пикселях (примерно 24dp при плотности экрана)
}
// Заголовок
val title = TextView(this).apply {
text = "Калькулятор ИМТ"
textSize = 28f
setTypeface(null, android.graphics.Typeface.BOLD)
gravity = android.view.Gravity.CENTER
setPadding(0, 0, 0, 40)
}
// Поле ввода веса
val weightInput = EditText(this).apply {
hint = "Вес (кг)"
inputType = android.text.InputType.TYPE_CLASS_NUMBER or android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL
setPadding(20, 20, 20, 20)
}
// Поле ввода роста
val heightInput = EditText(this).apply {
hint = "Рост (м) — например, 1.75"
inputType = android.text.InputType.TYPE_CLASS_NUMBER or android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL
setPadding(20, 20, 20, 20)
}
// Кнопка
val button = Button(this).apply {
text = "Рассчитать ИМТ"
setPadding(0, 30, 0, 30)
}
// Поле для результата
val resultText = TextView(this).apply {
text = ""
textSize = 18f
gravity = android.view.Gravity.CENTER
setPadding(0, 40, 0, 0)
}
// Добавляем все элементы в LinearLayout
linearLayout.addView(title)
linearLayout.addView(weightInput)
linearLayout.addView(heightInput)
linearLayout.addView(button)
linearLayout.addView(resultText)
// Добавляем LinearLayout в ScrollView
scrollView.addView(linearLayout)
// Устанавливаем ScrollView как содержимое экрана
setContentView(scrollView)
// Обработчик нажатия кнопки
button.setOnClickListener {
val weightStr = weightInput.text.toString().trim()
val heightStr = heightInput.text.toString().trim()
if (weightStr.isEmpty() || heightStr.isEmpty()) {
resultText.text = "Ошибка: заполните оба поля"
return@setOnClickListener
}
val weight = weightStr.toDoubleOrNull()
val height = heightStr.toDoubleOrNull()
if (weight == null || height == null) {
resultText.text = "Ошибка: введите числа (используйте точку)"
return@setOnClickListener
}
if (weight <= 0 || height <= 0) {
resultText.text = "Ошибка: вес и рост должны быть больше нуля"
return@setOnClickListener
}
val bmi = weight / (height * height)
val bmiFormatted = String.format("%.1f", bmi)
val category = when {
bmi < 18.5 -> "Дефицит массы тела"
bmi < 25.0 -> "Нормальная масса тела"
bmi < 30.0 -> "Избыточная масса тела (предожирение)"
else -> "Ожирение"
}
resultText.text = "Ваш ИМТ: $bmiFormatted\n($category)"
}
}
}