Resource-type-->Color State List Resource

本文介绍如何在Android中使用ColorStateList为按钮的文字设置不同的状态颜色,包括按下、聚焦及默认状态的颜色配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Color State List Resource

ColorStateList 可以用XML定义,并且可以用到View文字上。

 

文件存放位置:

 res/color/filename.xml

 

语法:

 

<?xml version="1.0" encoding="utf-8"?><selectorxmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:color="hex_color"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_window_focused=["true" | "false"] /></selector>

例子:

 

定义,/res/color/button_text_color.xml

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:color="#ffff0000"/> <!-- pressed -->
    <item android:state_focused="true"
          android:color="#ff0000ff"/> <!-- focused 在键盘手机上才会显示效果 --> 
    <item android:color="#ff000000"/> <!-- default -->
</selector>


应用:

 

 

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    android:textColor="@color/button_text_color" />



 

 

 

 

start([开始: rproc_host_probe(pdev)]) --> A %% 1. 分配rproc结构体 A[devm_rproc_alloc(...) 分配rproc及priv] -->|失败| R_NOMEM[返回 -ENOMEM] A -->|成功| B[priv = rproc->priv] %% 2. 获取并映射寄存器内存资源 B --> C[platform_get_resource(IORESOURCE_MEM, 0) 获取寄存器资源] C -->|失败| E1[跳转到 err_free_priv] C -->|成功| D[devm_ioremap_resource(...) 映射寄存器到reg_base] D -->|失败 (IS_ERR)| E1 D -->|成功| F %% 3. 获取并映射共享内存资源 F[platform_get_resource(IORESOURCE_MEM, 1) 获取共享内存资源] F -->|失败| E1 F -->|成功| G[解析shm_phys = mem->start, shm_size = 资源大小] G --> H{是否定义 CONFIG_ZONE_DEVICE?} H -->|是| H1[_devm_memremap_pages(...) 映射共享内存到shm_base] H -->|否| H2[devm_memremap(...) 映射共享内存到shm_base] H1 -->|失败| E2[跳转到 err_unmap_reg] H2 -->|失败| E2 H1 -->|成功| I H2 -->|成功| I %% 4. 初始化priv与工作队列 I[初始化priv字段: magic/reg_base/shm_base等] --> J[INIT_WORK(&attach_work, rproc_host_attach_work)] J --> K[alloc_workqueue(...) 创建priv->workq] K -->|失败| E2 K -->|成功| L %% 5. 创建通用内存池 L[gen_pool_create(...) 创建dma_buf_pool] -->|失败| E3[跳转到 err_unmap_shm] L -->|成功| M[计算gen_pool_phys/base/size (共享内存除去RSC_TAB_SIZE)] M --> N[gen_pool_add_virt(...) 添加内存到池] N -->|失败| E4[跳转到 err_release_gen_pool] N -->|成功| O[set_dma_ops(dev, &rproc_dma_ops)] %% 6. 配置并添加rproc O --> P[rproc->auto_boot = false; rproc->state = RPROC_DETACHED] P --> Q[devm_rproc_add(...) 注册rproc] Q -->|失败| E4 Q -->|成功| R %% 7. 中断配置 R[platform_irq_count(pdev) 获取中断数量] --> S[of_property_read_u32(...) 读取remote_irq_count] S --> T[检查remote_irq_count与irq_count的关系] T --> U[platform_get_irq(pdev, 0) 获取virq] U --> V[devm_request_irq(...) 注册rproc_ctrl_irq_handler] V -->|失败| E5[跳转到 err_remove_rproc] V -->|成功| W %% 8. 初始化链表与sysfs W[INIT_LIST_HEAD(&priv->node); 分配priv->irq_info] --> X[platform_set_drvdata(pdev, priv)] X --> Y[sysfs_create_group(...) 创建sysfs组] Y --> Z[加锁; list_add(&priv->node, &rproc_devices); 解锁] Z --> AA[queue_work(priv->workq, &attach_work)] --> AB[返回 0 (成功)] %% 错误处理分支 E1[err_free_priv] --> E1a[rproc_free(rproc)] --> E1b[返回 ret] E2[err_unmap_reg] --> E2a[devm_iounmap(dev, reg_base)] --> E1a E3[err_unmap_shm] --> E3a[devm_memunmap(dev, shm_base)] --> E2a E4[err_release_gen_pool] --> E4a[gen_pool_destroy(priv->dma_buf_pool)] --> E3a E5[err_remove_rproc] --> E5a[rproc_del(rproc)] --> E4a帮忙绘制个流程图
最新发布
08-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值