如何在Material按钮上编写多行文本?

4

我需要制作一个多行文本材料按钮。我已经遵循了这个问题的答案,但实际上材料按钮的工作方式不同。

<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" />

我得到了这个:

image

但我需要每个单词在不同的行中,就像这样:

image

2个回答

6

可能有些晚了,但这是我解决它的实现方式。

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
    }

}

1
您可以使用replace将其转换为多行字符串,例如在MaterialButton中:

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

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

这是输出的截图 -

enter image description here


谢谢您的回答,但这不是将原始文本设置为包含\n的相同吗?我尝试了您的解决方案,但遗憾的是它没有奏效。我正在使用Kotlin:val singleLine:String = button_parent.text.toString() val multiLine = singleLine.replace(" ", "\n") button_parent.text = multiLine - Hila Grossbard
1
啊,我明白了。问题不在于 MaterialButton,而是由于 MaterialButtonToggleGroup 导致的。所以,如果我没记错的话,MaterialButtonToggleGroup 不支持多行文本。它只支持单行文本和/或图像。你可以查看这个链接:LINK,还有 Material.io - sunnat629

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接