Android - Kotlin - Как преодолеть минимальный предел ширины кнопки?

Я пытаюсь манипулировать шириной кнопки андроида с 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
}

Есть идеи?

10000