Загрузка данных


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)"
        }
    }
}