MaterialButtonToggleGroup 中的 MaterialButton 无法执行wrap_content

问题描述 投票:0回答:1

我有以下 xml:

<LinearLayout
    android:id="@+id/ll_two_state"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:layout_marginStart="10dp"
    android:layout_marginEnd="10dp"
    app:cardCornerRadius="5dp"
    app:strokeWidth="1dp">

        <com.google.android.material.button.MaterialButton
            android:id="@+id/filterA"
            style="@style/customToggleButtonStyle"
            app:cornerRadius="0dp"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="läkdsvksd"
            android:textSelectHandleLeft="@drawable/rounded_corner"
            android:ellipsize="none"/>

        <com.google.android.material.button.MaterialButton
            android:id="@+id/filterB"
            style="@style/customToggleButtonStyle"
            app:cornerRadius="0dp"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:ellipsize="none"
            android:textSelectHandleRight="@drawable/rounded_corner"
            android:text="öskdjnvksjnbvsnfjknvlsnd fvlnsdkjnvsdklövölkjvndfökljnvljkdfnlvjknlvjkn" />
</LinearLayout>

它为我提供了两个高度相等的按钮作为切换按钮。

问题是,无论添加 maxLine、line 或 minLine 标签,使用 MaterialButtonToggleGroup 强制按钮到一行都无法获得相同的结果。

使用 MaterialButtonToggleGroup 的原因是在处理更改并获得圆角时代码更清晰。

有解决办法吗?还是我应该使用不同类型的视图?

android android-layout material-design android-togglebutton
1个回答
0
投票

我终于得到了我所期望的。 这个问题有两个bug:

  1. 按钮未包装其内容

  2. MaterialButtonToggleGroup 覆盖 maxLine

因此我对 LinearLayout 的修复可以用于 MaterialButtonToggleGroup,如下所示:

<com.google.android.material.button.MaterialButtonToggleGroup
        android:id="@+id/toggle_group"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:layout_marginEnd="10dp"
        android:gravity="center"
        app:cardCornerRadius="5dp"
        app:selectionRequired="true"
        app:singleSelection="true"
        app:strokeWidth="1dp">

        <com.google.android.material.button.MaterialButton
            android:id="@+id/filterA"
            style="@style/customToggleButtonStyle"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="State A" />

        <com.google.android.material.button.MaterialButton
            android:id="@+id/filterB"
            style="@style/customToggleButtonStyle"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="State B" />

    </com.google.android.material.button.MaterialButtonToggleGroup>

并将以下几行添加到我的代码中:

binding.filterA.maxLines = 2
binding.filterB.maxLines = 2

现在看起来像这样:

© www.soinside.com 2019 - 2024. All rights reserved.