首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android - 如何将按钮的形状drwable和文本颜色组合为不同的状态?

这个问题涉及到Android应用开发中的按钮样式和状态处理。为了实现不同状态下的按钮形状和文本颜色,你可以使用以下方法:

  1. 创建一个自定义的按钮样式:

在Android项目的res/drawable目录下,创建一个名为custom_button.xml的文件,用于定义按钮的不同状态样式。

代码语言:xml<selector xmlns:android="http://schemas.android.com/apk/res/android">
复制
    <item android:state_pressed="true">
       <shape>
            <solid android:color="@color/button_pressed" />
            <corners android:radius="8dp" />
           <stroke android:color="@color/button_pressed_border" android:width="2dp" />
        </shape>
    </item>
    <item android:state_focused="true">
       <shape>
            <solid android:color="@color/button_focused" />
            <corners android:radius="8dp" />
           <stroke android:color="@color/button_focused_border" android:width="2dp" />
        </shape>
    </item>
    <item>
       <shape>
            <solid android:color="@color/button_normal" />
            <corners android:radius="8dp" />
           <stroke android:color="@color/button_normal_border" android:width="2dp" />
        </shape>
    </item>
</selector>
  1. 在布局文件中应用自定义按钮样式:

在你的布局文件中,将android:background属性设置为刚刚创建的custom_button.xml文件。

代码语言:xml<Button
复制
    android:id="@+id/my_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="点击我"
    android:textColor="@color/button_text_normal"
    android:background="@drawable/custom_button" />
  1. 使用StateListAnimator实现按钮文本颜色的状态变化:

res/animator目录下创建一个名为button_text_color.xml的文件,用于定义按钮文本颜色的不同状态。

代码语言:xml<selector xmlns:android="http://schemas.android.com/apk/res/android">
复制
    <item android:state_pressed="true">
       <objectAnimator
            android:duration="100"
            android:propertyName="textColor"
            android:valueFrom="@color/button_text_pressed"
            android:valueTo="@color/button_text_normal" />
    </item>
    <item android:state_focused="true">
       <objectAnimator
            android:duration="100"
            android:propertyName="textColor"
            android:valueFrom="@color/button_text_focused"
            android:valueTo="@color/button_text_normal" />
    </item>
    <item>
       <objectAnimator
            android:duration="100"
            android:propertyName="textColor"
            android:valueFrom="@color/button_text_normal"
            android:valueTo="@color/button_text_normal" />
    </item>
</selector>
  1. 在布局文件中应用StateListAnimator

在你的布局文件中,将android:stateListAnimator属性设置为刚刚创建的button_text_color.xml文件。

代码语言:xml<Button
复制
    android:id="@+id/my_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="点击我"
    android:textColor="@color/button_text_normal"
    android:background="@drawable/custom_button"
    android:stateListAnimator="@animator/button_text_color" />

这样,你就可以根据按钮的不同状态来实现按钮形状和文本颜色的组合变化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 样式系统 | 常见主题背景属性

attr/colorError 显示错误时颜色。 其他常用颜色: ?attr/colorControlNormal 正常状态下设置给 icon/controls 颜色; ?...android:attr/textColorPrimary 设置给文本主要颜色; ?android:attr/textColorSecondary 设置给文本次要颜色。 大小 ?...TextAppearance Material 定义了缩放类型,它是在整个应用中使用文本样式组成离散集合,集合中每个值都是一个主题背景属性,可以被设置为 textApperance。...形状 Material 采用了形状系统 (Shape system),它是由主题背景属性 实现 了 small、medium、large 等不同部件。...按钮风格 Material 提供了三种不同类型按钮: Contained、Text 以及 Outlined。

1K30

Android样式开发:selector篇

不过,shape只能定义单一形状,而实际应用中,很多地方比如按钮、Tab、ListItem等都是不同状态不同展示形状。...举个例子,一个按钮背景,默认时是一个形状,按下时是一个形状,不可操作时又是另一个形状。有时候,不同状态下改变不只是背景、图片等,文字颜色也会相应改变。...而要处理这些不同状态下展示什么问题,就要用selector来实现了。 selector标签,必须作为xml文件根节点,可以添加一个或多个item子标签,而相应状态是在item标签中定义。...代码,用于按钮文本颜色: <?...资源,也可以引用@color颜色值;但android:color只能引用@color; item是从上往下匹配,如果匹配到一个item那它就将采用这个item,而不是采用最佳匹配规则;所以设置默认状态

2K30

不懂设计产品不是好开发

在演示应用程序中,我们有一个饼状图,其中我们需要在每个部分使用不同颜色。另一个例子是用颜色作为不同状态视觉指标,如警报级别、金额变化或性能变化(减少/增加)。...如果这些类别在语义上可以分为两,我就会首先为第一挑选3种具有类似调和性颜色。然后,我将为第二找到每种颜色互补色。 色彩理论是一个巨大的话题,而且它并不简单。为背景找到合适颜色需要进行实验。...Button文本样式与动作相关,用于按钮、标签、对话框卡片。...一个按钮可以有一个最大20px圆角半径值,最大6px切角值。 我根据以下观察结果,将形状应用于演示应用程序中UI组件。ATA标志有清晰圆角。Biohack标志有一个几何形状尖锐切口。...图标字体是用字体中字形绘制,但不是字母,而是图标形状。在Android项目中,我们将SVG文件中材质设计图标作为XML文件添加到资源文件夹中。

2.5K20

Material Design Compoents 1.1.0

) 扩展 Floating Action 按钮 切换按钮 支持 Android 10 进行边缘手势导航组件 改善无障碍功能 全新 Material Theming (形状、板式、颜色) 稳定性质量改进...Material Theming Material Theming 可以让你更好自定义 Material Design 来体现我们品牌、颜色、字体形状选择。...所有组件都支持通过主题、样式、新属性自定义类(比如:MaterialShapeDrawable) 来调整其颜色、字体形状。...例如,文字有新默认 appearance MDC 1.1.0 中提供一些新组件更新组件包括: 扩展 FAB 日期选择器 切换按钮 底部应用栏 黑色主题支持 在 Android 10 中引入了系统范围深色主题支持...默认情况下 colorSurface android:colorBackground 使用深灰而不是黑色来减轻眼睛疲劳,使高程度更明显,并确保与文本其他元素形成适当对比度。

1.1K10

Grafana+Flowcharting实现漂亮可定制动态链路监控图

/Critical) Direction:方向,可选项包括(Vertical垂直、Horizontal水平) Color with state:是否开启状态颜色,即鼠标经过时,看到metrics颜色是否随状态发生变化...border:图像边框颜色 Label/Text Mappings(标签/文本映射) Identify by:依据Id或label标签来匹配对应图上元素,可以通过点击链接按钮直接选中某个元素 What...:图形元素Id When :当处于哪种状态 How :标签或文本显示方式,有以下可选项目: All content:显示所有内容,即标签映射后值 Substring :字符串,即显示标签名 Append...(事件/动画映射) Identify by:依据Id或label标签来匹配对应图上元素,可以通过点击链接按钮直接选中某个元素 What :图形元素Id When :当处于哪种状态 Action :满足条件时动作...,有以下可选项 Shape: Change form(text) :改变形状,值是text,支持输入各种形状,如ellipse(椭圆)、card(卡片)、cloud(云)等,即可以使不同状态显示不同图形

4.7K40

《移动互联网技术》第六章 资源管理: 掌握定制控件样式、界面主题、可绘制资源程序编写方法

比如:添加一个定制按钮样式,设置不同文本颜色背景颜色。 \res\values\styles.xml 定义好样式以后,就可以在布局文件按钮定义中使用新样式。...在按钮属性里设置style属性值为定制按钮样式。按钮就会按照定义文本背景颜色来显示。...shape设置为圆形,当然也可以设置其他形状,比如线条、梯形等。另外,还设置了按钮填充颜色。...它会根据按钮状态来切换使用不同样式(指向不同drawable)来呈现动态效果。...称为选择器,用来设置与状态相关效果,比如按钮点击,文本框获取焦点,图片或文字被选中等等,这些状态让控件展现出不同显示效果。

6510

如何在.NET电子表格应用程序中创建流程图

前言 流程图是一种常用图形化工具,用于展示过程中事件、决策操作顺序关系。它通过使用不同形状图标箭头线条,将任务步骤按照特定顺序连接起来,以便清晰地表示一个过程执行流程。...(添加完之后如下图所示) 4.将文本添加到形状 5.将形状添加到电子表格流程图 将鼠标悬停在连接器箭头抓柄上,鼠标光标会发生变化。...选择位置后,您将看到连接点变为绿色,表明线条已连接到形状。 连接完之后样式: 6.将样式应用到形状 此步骤介绍如何应用样式主题以及如何将自定义样式应用于形状。...用户可以使用“形状格式”选项卡形状样式”部分自定义形状背景颜色轮廓颜色。...Spread 设计器支持使用上下文菜单/或工具栏对象”按钮形状分组在一起。

18420

Android | Compose 初上手

声明式范式转变 在 Compose 声明方法中,微件相对无状态,并且不提供 get,set 方法。实际上,微件微件不会以对象形式提供。你可以通过调用带有不同参数统一可组合函数来更新界面。...强调色,悬浮按钮,单选/复选按钮,高亮选中文本,链接标题 secondaryVariant: Color, // 用于区分强调色 background: Color, // 背景色..., // 错误色,展示错误信息,比如TextField提示信息 onPrimary: Color, // 在主颜色primary之上文本图标的颜色 onSecondary: Color..., // 在强调色secondary之上文本图标的颜色 onBackground: Color, // 在背景色background之上文本图标的颜色 onSurface: Color..., // 在表层色surface之上文本图标的颜色 onError: Color, // 在错误色error之上文本图标的颜色 isLight: Boolean // 是否是浅色模式

5.2K20

Android-Xml绘图

solid: 设置形状填充颜色,只有android:color一个属性 android:color 填充颜色 padding: 设置内容与形状边界内间距,可分别设置左右上下距离 android...size是用来设置形状大小,如下: size: 设置形状默认大小,可设置宽度高度 android:width 宽度 android:height 高度 数字0是默认椭圆,只加了solid...不过,shape只能定义单一形状,而实际应用中,很多地方比如按钮、Tab、ListItem等都是不同状态不同展示形状。...举个例子,一个按钮背景,默认时是一个形状,按下时是一个形状,不可操作时又是另一个形状。有时候,不同状态下改变不只是背景、图片等,文字颜色也会相应改变。...而要处理这些不同状态下展示什么问题,就要用selector来实现了。 selector标签,可以添加一个或多个item子标签,而相应状态是在item标签中定义

73310

一文彻底搞清楚 Material Design

这是 Android 使用默认状态列表动画,更改 Z 属性。 按钮动作效果,默认 FAB 有 6dp Elevation,当按下按钮时 translation Z 值开始增加。...动态海拔高度偏移:指的是从静止状态向目标海拔移动距离(translationZ) 组件海拔高度: 同一件在不同应用中,海拔高度是相同,比如:不同应用中浮动操作按钮海拔是相同 同一件在不同平台设备中...一般控件标准海拔 应用栏:4dp 按钮:静止状态 2dp 按下状态:8dp 浮动操作按钮(FAB)静止:6dp 按下:12dp 卡片 静止:2dp 浮动状态:8dp 菜单子菜单:菜单:8dp...也会显示阴影 background:按背景来显示轮廓,如果 background 是颜色值,则轮廓就是 view 大小,如果是 shape 则按shape指定形状来作为轮廓,显示阴影 如果 background...物质材料内部可以展示任何形状颜色,但其内容不会增加材料厚度。

2.1K10

Axure RP8入门之基本操作篇

### 6.设置形状或图片圆角 选择要改变颜色元件,点击快捷功能区中背景颜色设置按钮,选取相应颜色,或者在元件样式中进行设置。...### 12.设置打开选择文件窗口 文本框属性中选择文本{类型}为【文件】,即可在浏览器中变成打开选择本地文件按钮。该按钮样式各浏览器略有不同。...可以通过【属性】-【列表项】选项来设置,也可以通过鼠标双击元件进行设置 ### 21.设置元件默认选中/禁用 元件属性中可以对一些元件默认状态进行设置,可以设置状态包括【选中】【禁用】,默认状态设置...### 22.设置单选按钮唯一选中 全选所有的单选按钮,在元件属性中{设置单选按钮名称},即可实现唯一选中效果。...### 23.设置元件不同状态样式 点击元件属性中各个交互样式名称,即可设置元件在不同状态时呈现样式。这些样式在交互被触发时,就会显示出来。

4.8K30

Qt Designer中QWidget属性表介绍

颜色设置必须与WindowBase对应颜色有良好对比 QPalette.Button 1 button背景颜色,此背景可能与Window指定背景色不同,因为某些样式要求按钮使用不同背景色...QPalette.ButtonText 8 使用按钮文本颜色作为前景颜色 QPalette.BrightText 7 一种与WindowText指定前景色有很大不同文本/前景色,并且与诸如阴暗颜色能形成很好对比...请注意,该颜色可用于除文字以外其他用途:一般文本颜色通常用于文本,但对于行,图标等使用文本颜色校色是很罕见 ColorGroup颜色 颜色是指对应同一外观组合在 激活状态(active,指获得焦点...---- 上图中只有active 激活状态,其他两种状态颜色是电脑根据规则计算出来,如果要查看或者设置颜色三种状态,在上图中选择“show details”(显示细节)即可,如下图 image.png...当部件状态切换时,默认图标绘制函数会自动根据部件状态重绘图标 Ⅱ、enum State { Off, On } 某些部件还有所谓开关状态(比如一个按钮可以有按下弹起两个状态), 则还可以根据

9.9K20

Python学习总结(1)—turtle海龟作图

海龟作图 1.海龟移动绘制 2.获取海龟状态 3.设置与度量单位 4.画笔绘图状态 5.画笔颜色控制 6.填充 7.更多绘图控制 8.海龟可见性 9.海龟外观 10.使用事件 11.特殊海龟方法 1...) 设置画笔颜色填充颜色 Color可以是代表颜色字符串;可以是一个r,g,b三元元组;可以是r,g,b三个数以逗号间隔 BColor缺省时,画笔颜色填充颜色都设置为AColor pencolor...clear() 清空图案 从屏幕中删除指定海龟绘图。不移动海龟。海龟状态位置以及其他海龟绘图不受影响。...如果 move 为 True,画笔会移动到文本右下角。...如果未指定 angle: 返回当前倾角,即海龟形状方向海龟朝向 (移动方向) 之间夹角。

1.4K10

Flutter文本、图片按钮使用

文本、图片按钮则是这些不同UI框架中构建视图都要用到最基本控件。...若onPressed参数为空,则按钮会处于禁用状态,不响应用户点击 child参数用于设置按钮内容,告诉Flutter控件应长成啥样,即控制按钮控件基本样式。...与Text控件类似,按钮控件也提供丰富样式定制功能,如背景颜色color、按钮形状shape、主题颜色colorBrightness等。...因为按钮背景颜色是浅色,为避免按钮文字看不清楚,我们通过设置按钮主题colorBrightness为Brightness.light,保证按钮文字颜色为深色。...展示效果: 4 总结 UI控件是构建一个视图基本元素,而文本、图片按钮则是其中最经典控件。

37620
领券