Как написать многострочный текст на кнопке материала?

Мне нужно сделать кнопку многострочного текстового материала. Я следил за ответами на этот вопрос, но оказалось, что кнопки материалов работают по-другому.

<com.google.android.material.button.MaterialButtonToggleGroup
    android:id="@+id/toggle_parent_child"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginEnd="16dp"
    android:theme="@style/Theme.MaterialComponents"
    android:visibility="gone"
    app:checkedButton="@id/button_parent"
    app:singleSelection="true">

    <com.google.android.material.button.MaterialButton
        android:id="@+id/button_parent"
        style="@style/Login.Button.ToggleButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Parent\n Device" />

    <com.google.android.material.button.MaterialButton
        android:id="@+id/button_child"
        style="@style/Login.Button.ToggleButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Child \n Device" />

Я получаю это:

образ

но мне нужно, чтобы каждое слово было в отдельной строке, например:

образ

1 ответ

Возможно, уже поздно, но вот моя реализация, чтобы исправить это

class MonsterButtonToggleGroup : MaterialButtonToggleGroup {

    constructor(context: Context) : super(context)
    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)


    override fun addView(child: View?, index: Int, params: ViewGroup.LayoutParams?) {
        super.addView(child, index, params)
        if (child is MaterialButton)
            child.maxLines = 2
    }

}

Вы можете использовать replace чтобы сделать это в вас многострочным MaterialButton нравится -

val singleLine = getString(R.string.hello_blank_activity)
demoText.text = singleLine

val multiLine = singleLine.replace(" ", "\n")
demoTextMulti.text = multiLine

Вот скриншот вывода -

https://stackru.com/images/31fb411a44789c60e7bd3f3b7c1adadc5353f0ae.png?s=256

Другие вопросы по тегам