如何在 Material 按钮上写多行文本?
How to write a multiline text on a Material button?
我需要制作一个多行文本 material 按钮。
我遵循了 this 问题的答案,但事实证明 material 按钮的工作方式不同。
<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" />
我明白了:
但我需要每个词都像这样在不同的行中:
您可以使用 replace
使其成为您 MaterialButton
中的多行字符串 -
val singleLine = getString(R.string.hello_blank_activity)
demoText.text = singleLine
val multiLine = singleLine.replace(" ", "\n")
demoTextMulti.text = multiLine
这是输出的屏幕截图 -
可能会迟到,但这是我的解决方案
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
}
}
我需要制作一个多行文本 material 按钮。 我遵循了 this 问题的答案,但事实证明 material 按钮的工作方式不同。
<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" />
我明白了:
但我需要每个词都像这样在不同的行中:
您可以使用 replace
使其成为您 MaterialButton
中的多行字符串 -
val singleLine = getString(R.string.hello_blank_activity)
demoText.text = singleLine
val multiLine = singleLine.replace(" ", "\n")
demoTextMulti.text = multiLine
这是输出的屏幕截图 -
可能会迟到,但这是我的解决方案
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
}
}