Загрузка данных
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)
// 1. Создаём ScrollView (корневой контейнер)
val scrollView = ScrollView(this)
// Параметры для ScrollView: вся ширина и вся высота
scrollView.layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
// 2. Создаём LinearLayout, который будет внутри ScrollView
val linearLayout = LinearLayout(this)
// Параметры для LinearLayout внутри ScrollView
linearLayout.layoutParams = ScrollView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
linearLayout.orientation = LinearLayout.VERTICAL
// Отступы (в пикселях, 32px ≈ 8-10dp в зависимости от плотности)
linearLayout.setPadding(64, 64, 64, 64)
// 3. Элементы интерфейса
val title = TextView(this)
title.text = "Калькулятор ИМТ"
title.textSize = 28f
title.setTypeface(null, android.graphics.Typeface.BOLD)
title.gravity = android.view.Gravity.CENTER
title.setPadding(0, 0, 0, 40)
// Для TextView внутри LinearLayout можно не задавать LayoutParams,
// LinearLayout сам подстроится, но лучше задать:
title.layoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
)
val weightInput = EditText(this)
weightInput.hint = "Вес (кг)"
weightInput.inputType = android.text.InputType.TYPE_CLASS_NUMBER or android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL
weightInput.setPadding(20, 20, 20, 20)
weightInput.layoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
)
val heightInput = EditText(this)
heightInput.hint = "Рост (м) — например, 1.75"
heightInput.inputType = android.text.InputType.TYPE_CLASS_NUMBER or android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL
heightInput.setPadding(20, 20, 20, 20)
heightInput.layoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
)
val button = Button(this)
button.text = "Рассчитать ИМТ"
button.setPadding(0, 30, 0, 30)
button.layoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
)
val resultText = TextView(this)
resultText.text = ""
resultText.textSize = 18f
resultText.gravity = android.view.Gravity.CENTER
resultText.setPadding(0, 40, 0, 0)
resultText.layoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
)
// Добавляем элементы в 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)"
}
}
}