【问题标题】:colorButtonNormal doesn't fill entire buttoncolorButtonNormal 不会填满整个按钮
【发布时间】:2016-05-24 23:47:10
【问题描述】:

我在我的 styles.xml 中设置 colorButtonNormal,如下所示:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
    <item name="colorButtonNormal">#33cc33</item>
</style>

但是,此属性的背景不会填满按钮的整个空间。

我有两个按钮。一个使用 colorButtonNormal,另一个使用 android:background 将背景设置为相同颜色:

       <Button
            android:id="@+id/afs_login_button"
            android:layout_width="fill_parent"
            android:layout_height="55dp"
            android:layout_marginBottom="10dp"
            android:textAllCaps="false"
            android:text="Button"
            android:textColor="#FFF" />

        <Button
            android:layout_width="fill_parent"
            android:layout_height="55dp"
            android:background="#33cc33"
            android:id="@+id/guest_login"
            android:text="Button"
            android:textColor="#FFF" />

以下是 Android Studio 预览窗格中的结果:

如您所见,蓝色轮廓是按钮,绿色背景并没有占据整个空间。但是,如果我专门设置 android:background,它会填满整个空间。任何想法为什么?

【问题讨论】:

    标签: android button material-design


    【解决方案1】:

    与默认按钮一起使用的背景可绘制对象被填充。点击区域大于实际(可见)按钮大小,这是您在 ui 检查器中看到的。

    将颜色设置为背景只会填充按钮的整个边界,使按钮看起来更大。点击区域还是一样的。这是因为颜色被转换为ColorDrawable

    您可以使用 tint 更改可绘制对象的颜色 - 这可以让您更改颜色,但保留按钮样式。

    【讨论】:

    • 不幸的是,这会产生与使用 colorButtonNormal 相同的结果
    • @user1282637 您是否真的希望默认按钮为单色并像第二个示例一样填充整个空间?
    • 我希望它具有与使用 colorButtonNormal 相同的行为,但让颜色填充背景。 IE。它保持它的选择器状态和对棒棒糖+的涟漪效应(这就是为什么我不能只使用 android:background)
    • @user1282637 您可以使用带有填充的默认样式,您可以使用状态列表实现自己的可绘制对象。不过,涟漪效应会很棘手
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多