Я пытаюсь манипулировать шириной кнопки андроида с Kotlin, используя minSdkVersion 19 или выше (у тестового телефона есть Android 8.0.0, API 26). Когда я пытаюсь сделать кнопку меньше, я вижу, что она не может пройти некоторый порог приблизительно выше 200 пикселей.
Вот как я создаю и манипулирую кнопкой:
val button = Button(this)
button.width = btn_side // btn_side = 175
constraintLayout.addView(button)
То, что я уже пробовал . Различные макеты: TableLayout, ConstraintLayout. Я попытался установить textSize в ноль, если он помешал ширине кнопки. Или заменить любой текст кнопки нулевой строкой. Я попытался применить нуль или 10px minWidth к кнопке. Я играл с методом кнопки setPadding. Я попытался назначить ширину с помощью свойства layoutParams. Ничего из этого не помогло.
Что мне не хватает?
Вот мой xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".GameFieldActivity"
android:id="@+id/constraintLayout"
>
* UPD * Кто-то удалил ответ с помощью, возможно, полезного намека: может быть способ использовать разные конструкторы кнопок . Возможно, есть способ пропускать нужную ширину кнопки через AttributeSet .
Всего 1 ответ
Короткий ответ:
val button = Button(this)
val layoutParams = ViewGroup.LayoutParams(
50, // you can set initial width here
ViewGroup.LayoutParams.WRAP_CONTENT
)
constraintLayout.addView(button, layoutParams)
Некоторые детали:
// create a button
val button = Button(this)
// crate a layout params you want this button to be added to ViewGroup with
val layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
// add a button to ViewGroup with layout params
constraintLayout.addView(button, layoutParams)
// set initial width
button.layoutParams.width = 50
button.width = 50
// increase width of button for 10 with each click
button.setOnClickListener {
button.layoutParams.width += 10
button.width += 10
}