Android - Kotlin - Как преодолеть минимальный предел ширины кнопки? - PullRequest
0 голосов
/ 20 ноября 2018

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

0 голосов
/ 20 ноября 2018

Краткий ответ:

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
}
...