首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android按钮在棒棒糖上,在前棒棒糖上突出显示

Android按钮在棒棒糖上,在前棒棒糖上突出显示
EN

Stack Overflow用户
提问于 2015-09-15 05:22:13
回答 2查看 6.9K关注 0票数 7

嗨,所以我有点困惑,想知道是否有人能指出我的正确方向。

使用Google Play Store on棒棒糖和预棒棒糖。

你会在棒棒糖上看到可选择的视图会产生连锁反应。

在前罗利波,你会得到这个突出效果。

这是怎么做的?

目前,在我的应用程序中,我有一个可绘制的-v21目录,其中包含这个选择器。

它基本上会在我的背景上产生涟漪

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">
    <item android:id="@android:id/mask" android:drawable="@android:color/white"/>
    <item android:drawable="@color/colorAccentWith92PercentOpacity"/>
</ripple>

然而,其他的答案说要用

android:background="?attr/selectableItemBackground“

以获得前棒棒糖的突出效果,但这压倒了我的背景。我怎么能把这个放在我目前的背景之上呢?

另外,我是否必须为我的应用程序中的每一种按钮创建一个纹章式的绘图(在drable-v21中)?我该如何为回收者查看物品呢?

是什么使这个问题成为唯一的

我不想要棒棒糖前的波纹,我想问的是,开发人员是如何有效地让他们的按钮在棒棒糖上做波纹的,而高光效应是如何在pre上实现的。

EN

回答 2

Stack Overflow用户

发布于 2015-09-15 06:07:41

备选案文1

在你的主题中定义colorControlHighlight,只要你使用默认的appcompat-v7按钮,突出显示的颜色就会显示出来。

选项2

这是一个例子,说明我如何在不使用外部库的情况下支持带有交叉淡入动画和阴影的材质按钮样式。希望它能在你的路上帮助你。

如果该按钮为白色文本,背景为暗背景(@color/control_normal),亮亮:

值/mees.xml

在这里,我将覆盖整个主题的默认按钮样式:

代码语言:javascript
运行
AI代码解释
复制
<style name="AppTheme" parent="Base.AppTheme">
    <item name="buttonStyle">@style/Widget.AppTheme.Button</item>
</style>

值/INTERGERs.xml

代码语言:javascript
运行
AI代码解释
复制
<!-- Some numbers pulled from material design. -->
<integer name="button_pressed_animation_duration">100</integer>
<integer name="button_pressed_animation_delay">100</integer>

值-v21/styes.xml

按钮样式的棒棒糖,了解主题覆盖和使用波纹默认。让它用适当的油漆把波纹涂上颜色:

代码语言:javascript
运行
AI代码解释
复制
<style name="Widget.AppTheme.Button" parent="Widget.AppCompat.Button">
    <!-- On Lollipop you can define theme via style. -->
    <item name="android:theme">@style/ThemeOverlay.AppTheme.Button</item>
</style>

<style name="ThemeOverlay.AppTheme.Button" parent="ThemeOverlay.AppCompat.Dark">
    <!-- The magic is done here. -->
    <item name="colorButtonNormal">@color/control_normal</item>
</style>

值/styes.xml

在棒棒糖之前就很棘手了。

代码语言:javascript
运行
AI代码解释
复制
<style name="Widget.AppTheme.Button" parent="Widget.AppCompat.Button">
    <item name="android:background">@drawable/button_normal_background</item>
</style>

可拖/纽扣_法线_背景.

Thi是整个按钮的复合绘图。

代码语言:javascript
运行
AI代码解释
复制
<inset
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetLeft="@dimen/abc_button_inset_horizontal_material"
    android:insetTop="@dimen/abc_button_inset_vertical_material"
    android:insetRight="@dimen/abc_button_inset_horizontal_material"
    android:insetBottom="@dimen/abc_button_inset_vertical_material">
    <layer-list>
        <!-- Shadow. -->
        <item
            android:drawable="@drawable/button_shadow"
            android:top="-0dp"
            android:bottom="-1dp"
            android:left="-0dp"
            android:right="-0dp"/>
        <item
            android:drawable="@drawable/button_shadow_pressable"
            android:top="-0dp"
            android:bottom="-3dp"
            android:left="-1dp"
            android:right="-1dp"/>
        <!-- Background. -->
        <item android:drawable="@drawable/button_shape_normal"/>
        <!-- Highlight. -->
        <item>
            <selector
                android:enterFadeDuration="@integer/button_pressed_animation_duration"
                android:exitFadeDuration="@integer/button_pressed_animation_duration">

                <item
                    android:drawable="@drawable/button_shape_highlight"
                    android:state_focused="true"
                    android:state_enabled="true"/>
                <item
                    android:drawable="@drawable/button_shape_highlight"
                    android:state_pressed="true"
                    android:state_enabled="true"/>
                <item
                    android:drawable="@drawable/button_shape_highlight"
                    android:state_selected="true"
                    android:state_enabled="true"/>
                <item android:drawable="@android:color/transparent"/>
            </selector>
        </item>
        <!-- Inner padding. -->
        <item android:drawable="@drawable/button_padding"/>
    </layer-list>
</inset>

可拖/纽扣_阴影

这是不按下的影子。

代码语言:javascript
运行
AI代码解释
复制
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners
        android:bottomLeftRadius="3dp"
        android:bottomRightRadius="3dp"
        android:topLeftRadius="2dp"
        android:topRightRadius="2dp"/>
  <solid android:color="#2000"/>
</shape>

可拖/纽扣阴影_shadow able.xml

这是按下状态下的扩展阴影。当你近距离看时,结果效果看起来很粗糙,但从远处看它就足够好了。

代码语言:javascript
运行
AI代码解释
复制
<selector
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="UnusedAttribute"
    android:enterFadeDuration="@integer/button_pressed_animation_duration"
    android:exitFadeDuration="@integer/button_pressed_animation_duration">
    <item
        android:state_pressed="true"
        android:state_enabled="true">
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <corners
                android:bottomLeftRadius="5dp"
                android:bottomRightRadius="5dp"
                android:topLeftRadius="3dp"
                android:topRightRadius="3dp"/>
            <solid android:color="#20000000"/>
        </shape>
    </item>
    <item android:drawable="@android:color/transparent"/>
</selector>

可拖/按钮形状_正常化

这是主按钮的形状。

代码语言:javascript
运行
AI代码解释
复制
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="@dimen/abc_control_corner_material"/>
    <solid android:color="@color/control_normal"/>
</shape>

可拖/按钮_padding.xml

只是额外的填充,以绝对一致的材料按钮。

代码语言:javascript
运行
AI代码解释
复制
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@android:color/transparent"/>
    <padding
        android:left="@dimen/abc_button_padding_horizontal_material"
        android:top="@dimen/abc_button_padding_vertical_material"
        android:right="@dimen/abc_button_padding_horizontal_material"
        android:bottom="@dimen/abc_button_padding_vertical_material"/>
</shape>

可拖/纽扣_shape_FLUELIT.xml

这是高亮按钮形状绘制的正常按钮形状。

代码语言:javascript
运行
AI代码解释
复制
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="@dimen/abc_control_corner_material"/>
    <solid android:color="@color/control_highlight"/>
</shape>

@color/control_highlight可以指向

  • @color/ripple_material_dark -半透明白色,用于深色背景
  • @color/ripple_material_light -半透明黑色,用于浅色背景
  • 你定义的任何其他颜色。
票数 6
EN

Stack Overflow用户

发布于 2016-04-05 04:48:10

您可以这样设置视图的背景:

代码语言:javascript
运行
AI代码解释
复制
android:background="@drawable/touch_selector"

为预棒棒糖创建一个没有纹章的版本:drawable/touch_selector.xml

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">  
    <!-- State when a row is being pressed, but hasn't yet been activated (finger down) -->
    <item android:state_pressed="true"
        android:drawable="@color/grey"
        />

    <!-- For ListView in SINGLE_CHOICE_MODE, it flags the active row -->
    <item android:state_activated="true"
          android:drawable="@color/light_green" />

    <!-- Default, "just hangin' out" state. -->
    <item android:drawable="@android:color/transparent" />
</selector>

现在,对棒棒糖和以上也要做同样的事情,但会产生连锁反应:

克里特drawable-v21/touch_selector.xml

它将看起来像:

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- State when a row is being pressed, but hasn't yet been activated (finger down) -->
    <item android:state_pressed="true">
        <ripple android:color="@color/grey" />
    </item>

    <!-- For ListView, when the view is "activated".  In SINGLE_CHOICE_MODE, it flags the active row -->
    <item android:state_activated="true"
          android:drawable="@color/light_green" />

    <!-- Default, "just hangin' out" state. -->
    <item android:drawable="@android:color/transparent" />
</selector>

就这样。

现在你在棒棒糖和上面的设备上有了涟漪效应,并在前棒棒糖上突出显示。

编辑:

如果在上面创建的ListView中使用作为ListView项的背景

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32587249

复制
相关文章
springboot之前端参数验证
对于任何一个应用而言,在客户端做的数据有效性验证主要目的是规范用户的输入,而真实的数据验证工作都是在服务后端代码当中实现的,但在实际的项目当中,也经常会因为各种各样的原因:懒得写,觉得前端验证了,后端没有太多的必要等等没有进行数据验证,其实养成数据的有效性验证是一个非常好的习惯。 1 可以避免很多数据有效性导致的BUG,防范其余开发者的基础攻击 2 在前后端进行接口联调的时候,不需要因为参数的问题沟通很久。
海加尔金鹰
2020/06/08
1.1K0
location.href跳转测试
测试代码 <script type="text/javascript"> function ToUrl(x){ location.href=x; } </script> <a href="javascript:;" onclick="javascript:ToUrl('http://www.baidu.com');">location.href跳转测试1</a> <a href="javascript:void(0);" onclick="javascr
deepcc
2018/07/05
7140
[答疑]是增加了一个功能还是增加了一个系统
关于系统的定义,《软件方法》一书给出了2个关键点,后来在答疑时补充了系统要满足充分,必要条件。现实中做系统增量开发时,并不是很好分辨。
用户6288414
2020/04/08
4150
[答疑]是增加了一个功能还是增加了一个系统
go : gin路径参数
本文介绍 gin框架下如何获取路径参数代码:package mainimport ( "net/http" "github.com/gin-gonic/gin")func main() { router := gin.Default() // This handler will match /user/john but will not match /user/ or /use router.GET("/user/:name", func(c *gin.Context) {
IT工作者
2022/07/22
7830
FastAPI教程 路径参数
所以,如果你运行示例并访问 http://127.0.0.1:8000/items/foo,将会看到如下响应:
wencheng
2022/04/18
6120
FastAPI教程 路径参数
Confluence 6 在升级之前
在这个指南中,我们将会与你一同对最新的 Confluence 站点在 Windows 或者 Linux 平台进行安装和更新。
HoneyMoose
2019/04/20
6340
Confluence 6 在升级之前
location.href跳转测试
测试代码 <script type="text/javascript"> function ToUrl(x){ location.href=x; } </script> <a href="javascript:;" onclick="javascript:ToUrl('http://www.baidu.com');">location.href跳转测试1</a> <a href="javascript:void(0);" onclick="javascr
deepcc
2018/05/16
1.1K0
Confluence 6 在升级之前 原
在这个指南中,我们将会与你一同对最新的 Confluence 站点在 Windows 或者 Linux 平台进行安装和更新。
HoneyMoose
2019/04/29
5340
Confluence 6 在升级之前
                                                                            原
fastapi 用户指南(路径参数、查询参数、请求体)
learn from https://fastapi.tiangolo.com/zh/tutorial/
Michael阿明
2022/01/07
1.9K0
fastapi 用户指南(路径参数、查询参数、请求体)
FastAPI学习-2.路径参数
所以,如果你运行示例并访问 http://127.0.0.1:8000/items/foo,将会看到如下响应:
上海-悠悠
2023/08/22
2820
FastAPI学习-2.路径参数
java——推断日期是否在今天之前
这里说的日期是指字符串的日期格式,如“2014-10-15”,我们要推断这个日期是否在今天之前,网上看到好多推断的方法,都是拿这个日期转换成Date对象 然后与new Date()比較,使用comparetTo() 或者before()方法,事实上这样做都会有点小问题,这样做忽略了一个小时分钟的比較,会出现错误,得不到正确的结果。
全栈程序员站长
2022/07/08
2.2K0
Consul初探-在深交之前先认识
首先,官方介绍是:Consul 是一种服务网格的解决方案,在 Consul 中,提供了服务发现、配置、分段等控制管理平台,Consul 中的每项功能都可以单独使用,也可以一起使用来构建完整的服务网格;在 Consul 内部,有一个简单的代理服务,所以在安装 Consul 后,马上就可以开始使用 Consul ;当然,Consul 也支持集成第三方代理,比如 Envoy。
梁规晓
2019/07/09
5230
Consul初探-在深交之前先认识
FastAPI(4)- 路径参数 Path Parameters
123 传进来的时候是字符串,但 FastAPI 会自动解析转换成 int,如果转换失败就会报错
小菠萝测试笔记
2021/09/26
2.2K0
FastAPI(4)- 路径参数 Path Parameters
sqlmap 源码分析(三)在注入之前
sqlmap是web狗永远也绕不过去的神器,为了能自由的使用sqlmap,阅读源码还是有必要的…
LoRexxar
2023/02/21
1.6K0
MCU在执行main之前做了什么?
本文以Arm Cortex-M为例,介绍了在IAR Embedded Workbench中微控制器(MCU)的启动过程。在MCU复位后,程序计数器(PC)会指向相应的复位向量,并开始执行启动代码(startup code)。如果MCU支持浮点单元(FPU),则在启动过程中,首先会调用__iar_init_vfp来初始化FPU,然后继续执行__iar_program_start。接着,__iar_program_start会调用__cmain函数。在__cmain中,会先调用__low_level_init函数,然后调用__iar_data_init3来进行全局和静态变量的初始化。在__iar_data_init3中,首先会调用__iar_zero_init3来初始化初始值为0的全局和静态变量,随后会调用__iar_copy_init3来初始化初始值为非0的全局和静态变量。最终,在启动过程的最后阶段,会通过调用__call_main来跳转到main函数,从而开始执行主程序。
刘盼
2023/08/22
9890
MCU在执行main之前做了什么?
imread参数_imread函数图片路径matlab
imread的函数原型是:Mat imread( const string& filename, int flags=1 );
全栈程序员站长
2022/11/04
8240
在main方法之前,到底执行了什么?
本人在做接口测试的时候,需要用一个公共类来把所有的执行的代码,然后这个公共类有hsot和hosttype等属性来区分各个测试环境,然后在去不同的地方取用例和请求接口。在给这些属性复制的时候,我是通过不同测试环境新建不同的配置文件,然后执行每个环境的时候让只加载需要测试的环境的配置文件来实现管理测试环境的。中间遇到了一些坑,主要就是对java代码执行循序,特别是在main方法之前的代码执行顺序了解不深入导致的,中间有多个继承关系也有点扰乱了思路。下面分享一下自己这个错误的复现步骤。
FunTester
2019/08/30
7470
HyperSQL 链接参数中文件的路径
如果我们在系统中配置下面的连接参数: spring.datasource.url=jdbc:hsqldb:file:~/db/cwiki-us-jpetstore 我们怎么知道 hsqldb 数据库的存储路径在哪里? 请参考下面的解答: 在 Windows 系统中,如果你登录的用户名为 yhu 的话。 那么这个数据库文件在 :C:\Users\yhu\db 中存储。
HoneyMoose
2019/06/07
1K0
HyperSQL 链接参数中文件的路径
(adsbygoogle = window.adsbygoogle || []).push({});
HoneyMoose
2019/06/11
1.1K0
点击加载更多

相似问题

.htaccess从非www Http子文件夹重定向到www https子文件夹

18

.htaccess子文件夹从http://重定向到www

11

从域www到no-www到子文件夹

22

htaccess重写非www子文件夹到www子文件夹重定向到www根目录

12

htaccess将非www子文件夹重定向到www子文件夹。

32
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档