我使用的是Android v21支持库.

我已经创建了一个具有自定义背景色的按钮.当我使用背景 colored颜色 时,material 设计效果(除了点击时的立面效果)消失了,如波纹、显示.

 <Button
 style="?android:attr/buttonStyleSmall"
 android:background="?attr/colorPrimary"
 android:textColor="@color/white"
 android:textAllCaps="true"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="Button1"
 />

Background

<Button
 style="?android:attr/buttonStyleSmall"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:textAllCaps="true"
 android:text="Button1"
/>

默认按钮

推荐答案

当您使用android:background时,您将用空白 colored颜色 替换按钮的大部分样式和外观.

Update:AppCompat中的version 23.0.0 release开始,有一个新的Widget.AppCompat.Button.Colored样式使用你的主题的colorButtonNormal作为禁用 colored颜色 ,colorAccent作为启用 colored颜色 .

这使您可以直接通过

<Button
  ...
  style="@style/Widget.AppCompat.Button.Colored" />

如果您需要定制colorButtonNormalcolorAccent,可以使用ThemeOverlay,如按钮上的this pro-tipandroid:theme所述.

Previous Answer

您可以使用v21目录中的可绘制文件作为背景,例如:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="?attr/colorControlHighlight">
    <item android:drawable="?attr/colorPrimary"/>
</ripple>

这将确保您的背景色为?attr/colorPrimary,并使用默认的?attr/colorControlHighlight(如果您愿意,也可以在主题中设置)设置默认的涟漪动画.

注意:您必须创建低于v21的自定义 Select 器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/primaryPressed" android:state_pressed="true"/>
    <item android:drawable="@color/primaryFocused" android:state_focused="true"/>
    <item android:drawable="@color/primary"/>
</selector>

假设您有一些默认、按下和聚焦状态所需的 colored颜色 .就我个人而言,我在被选中的中途拍下了一张涟漪的截图,并从中摆脱了主要/集中的状态.

Android相关问答推荐

如何使用DeliveromManager.placeCall()删除已拨打的呼叫?

KMM项目生成错误-';在项目';中找不到测试类:共享';

如何检测HitTest是否命中给定的网格对象?

无法加载类';com.android.build.api.extension.AndroidComponentsExtension';

Android手柄注射周期错误,多个模块引用一个核心模块

activity在 Runnable 中如何工作?我的 Android 表格未显示

使用 Gadle kotlin 为多模块 Android 代码库设置 jacoco

相机2问题:设置AE区域、AF区域和AWB区域.

可从 Play store 下载链接访问未发布的应用

Jetpack Compose 绘制范围内的动画

Jetpack Compose 如何使一个项目相对于另一个项目垂直居中

Jetpack Compose 中带有权重的行和 AnimatedVisibility 会 destruct UI

NFC getNdefMessage 在 Android 13 上写入标签后返回 null

Jetpack Compose Canvas drawText colored颜色 混合?

Jetpack compose 为网络检索视频帧导致延迟

自定义 Recyclerview [Android & Kotlin]

清洁架构中的服务

使用 capacitor cordova 插件的 Android Studio 错误

更改 Android SDK 版本 33 后建议在 xml 布局文件中不起作用

为什么我不能在屏幕外拿任何物体