Android在MaterialButtonToggleGroup中添加带有多行文本的按钮不会';行不通

Android在MaterialButtonToggleGroup中添加带有多行文本的按钮不会';行不通,android,android-button,material-components-android,Android,Android Button,Material Components Android,我试图在材质按钮切换组中显示多行按钮,但它总是在换行处显示我… 但是它在材质按钮到开关组之外工作正常我已经尝试过了 使用\n和&10 将HTML标记与HTML.form方法一起使用 如下图所示,第一个按钮位于材质按钮切换组的外部,但第二个按钮位于其内部。 这是预期结果。您可以检查下面覆盖多行的源代码 您可以通过编程方式进行设置。比如: val button : MaterialButton = findViewById(R.id.add_anyone) button.max

我试图在材质按钮切换组中显示多行按钮,但它总是在换行处显示我
但是它在材质按钮到开关组之外工作正常

我已经尝试过了

  • 使用
    \n
    &10

  • HTML标记与HTML.form方法一起使用

    如下图所示,第一个按钮位于材质按钮切换组的外部,但第二个按钮位于其内部。

这是预期结果。您可以检查下面覆盖多行的源代码

您可以通过编程方式进行设置。比如:

    val button : MaterialButton = findViewById(R.id.add_anyone)
    button.maxLines = 2

源代码:


供将来参考的另一个技巧:

  • 提供您自己的自定义类,我们将其命名为CustomMaterialButtonToggleGroup,它扩展了MaterialButtonToggleGroup
  • 例如:

    public class CustomMaterialButtonToggleGroup extends MaterialButtonToggleGroup {
        public CustomMaterialButtonToggleGroup(@NonNull Context context) {
            super(context);
        }
    
        public CustomMaterialButtonToggleGroup(@NonNull Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        }
    
        public CustomMaterialButtonToggleGroup(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        @Override
        public void addView(View child, int index, ViewGroup.LayoutParams params) {
            super.addView(child, index, params);
            if(child instanceof MaterialButton)
            {
                ((MaterialButton) child).setMaxLines(2);
            }
        }
    
    SampleButton.setText("Hey\nI'm multiline"); // notice the escape character of newline-> \n
    
    这样,我们通过代码强制MaterialToggleGroup的子视图实现maxLines

    最后,第二部分是:

  • 转到您定义按钮的活动/片段…并通过代码进行设置 例如:

    public class CustomMaterialButtonToggleGroup extends MaterialButtonToggleGroup {
        public CustomMaterialButtonToggleGroup(@NonNull Context context) {
            super(context);
        }
    
        public CustomMaterialButtonToggleGroup(@NonNull Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        }
    
        public CustomMaterialButtonToggleGroup(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        @Override
        public void addView(View child, int index, ViewGroup.LayoutParams params) {
            super.addView(child, index, params);
            if(child instanceof MaterialButton)
            {
                ((MaterialButton) child).setMaxLines(2);
            }
        }
    
    SampleButton.setText("Hey\nI'm multiline"); // notice the escape character of newline-> \n
    
    然后像往常一样在strings.xml中提取它