如何从 ToggleButton 中删除 material 阴影?

How to remove material shadow from ToggleButton?

今天我遇到了一个问题:

在我的自定义布局中,有灰色背景的 LinearLayout 和此 LinearLayout 内 TextView 之后的 ToggleButton。 切换按钮具有透明背景。 但是在android Lollipop这里有多余的影子。 我试过 elevation=0dp 属性。但这并没有解决我的问题。

当我设置 api = 21

时会发生这种情况

这发生在年长的 apis < 21

这是示例布局:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="45dp"
    android:orientation="horizontal"
    android:background="@color/grey_light">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0123" />

    <ToggleButton
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        android:button="@android:color/transparent" />
</LinearLayout>

如何去除这个阴影?

尝试使用style="@android:style/Widget.Holo.Button.Borderless

将小部件更改为 appcompat(或任何您正在使用的)。

我正在使用这个:

style="?android:attr/borderlessButtonStyle"

ToggleButton 使用包含的状态列表动画器管理其高度和平移 Z。您可以通过设置禁用它:

android:stateListAnimator="@null"

或者通过提供您自己的选择器来处理这些值:

android:stateListAnimator="@drawable/my_selector"