markdownappcompatbutton具有ripple效果和touchontouch(代码片段)

author author     2022-12-14     632

关键词:

# AppCompatButton with Ripple effect and Lift on Touch

[SOURCE](https://stackoverflow.com/a/52015382/1602807)

Quick answer, you can probably get most of this done by using [Material Button](https://material.io/develop/android/components/material-button/) but if you can change your app theme or it doesn't work use AppCompatButton.

```xml
<androidx.appcompat.widget.AppCompatButton
        style="@style/ButtonTextStyle.booking"
        android:text="Book Home Visit"/>
```

in your `values/styles.xml`:

```xml
<style name="ButtonTextStyle.booking">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:minWidth">0dp</item> // padding doesn't work without minWidth and Height
    <item name="android:layout_height">45dp</item> // can't really center the text vertically so either use wrap_content or use a height big enough for it to center properly
    <item name="android:minHeight">0dp</item>
    <item name="android:includeFontPadding">false</item> // remove font padding to center text vertically
    <item name="android:lineSpacingExtra">0dp</item> // remove line spacing, probably doesn't need for single line item
    <item name="android:paddingStart">18dp</item>
    <item name="android:paddingEnd">18dp</item>
    <item name="android:background">@drawable/bg_green_corner</item> // use this to change corner radius
    <item name="android:textColor">@color/basic_white</item>
    <item name="android:textSize">16sp</item>
    <item name="android:textStyle">normal</item>
    <item name="android:gravity">center</item>
    <item name="android:lines">1</item>
    <item name="android:textAllCaps">false</item>
</style>
```

and in your `drawable/` create `bg_green_corner.xml`:

```xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
            android:shape="rectangle">
            <corners android:radius="5dp"/>
            <solid android:color="@color/fancy_blue"/>
        </shape>
    </item>
    <!-- Put any image or anything here as the drawable -->
    <item android:drawable="?attr/selectableItemBackground"/> // ripple effect
</layer-list>
```

如果具有 ID 的元素具有类 [重复]

】如果具有ID的元素具有类[重复]【英文标题】:IfelementwithIDhasasclass[duplicate]【发布时间】:2013-05-0719:24:13【问题描述】:我现在拥有的是functionsetMenuCurrentTo(variable)document.getElementById("game_"+variable).style.display="block";varelems=document.get... 查看详情

具有透明背景的 UITableView 具有纯黑色边框

】具有透明背景的UITableView具有纯黑色边框【英文标题】:UITableViewwithtransparentbackgroundhassolidblackborder【发布时间】:2011-06-1614:21:22【问题描述】:我尝试在我的UITableView上设置透明背景,但我有这个黑色边框。(来源:hostingpics.n... 查看详情

具有多个视图的 UIScrollView(具有按钮、滚动视图和标签)

】具有多个视图的UIScrollView(具有按钮、滚动视图和标签)【英文标题】:UIScrollViewwithmultipleviews(whichishavingbutton,scrollviewandlabel)【发布时间】:2012-12-2613:26:52【问题描述】:在我的应用程序中,我使用了具有多个视图的UIScrollView... 查看详情

ODataActionParameters 具有具有默认值的属性

】ODataActionParameters具有具有默认值的属性【英文标题】:ODataActionParameterstohaveapropertywithdefaultvalue【发布时间】:2021-10-1318:35:54【问题描述】:我有一个场景是我需要向现有的oData控制器操作添加一个可选参数。这样现有的呼叫就... 查看详情

具有多个条件的组加入,其中一个具有常数

】具有多个条件的组加入,其中一个具有常数【英文标题】:Groupjoinwithmultipleconditionsandoneofthembeingwithaconstant【发布时间】:2011-01-1020:35:15【问题描述】:这是我的(VB)LINQ的sn-p:Fromevent_evnInxmlEvents.Descendants("event_evn")_Joingenre_gnrInxml... 查看详情

具有具有最小值、最大值的 SQL 语句

】具有具有最小值、最大值的SQL语句【英文标题】:SQLstatementwithhaving,min,max【发布时间】:2020-01-2722:21:03【问题描述】:我有一张桌子:IDINTEGERNOTNULL,--AUTOMATICRECORD\'SIDCUSTOMER_IDINTEGERNOTNULL,BILING_PERIODDATENOTNULL,DOCUMENT_IDINTEGERNOTNULL,DATE... 查看详情

如何使用 ZIO(具有持久层)创建具有“传统”接口的小型库

】如何使用ZIO(具有持久层)创建具有“传统”接口的小型库【英文标题】:Howtocreateasmalllibrarywitha"legacy"interfaceusingZIO(havingpersistentlayers)【发布时间】:2021-07-0305:14:04【问题描述】:我们希望创建一个具有基于未来接口... 查看详情

如何检查 NSString 是不是具有具有特定地址的 URL

】如何检查NSString是不是具有具有特定地址的URL【英文标题】:HowtocheckifNSStringhasaURLwithaspecificaddress如何检查NSString是否具有具有特定地址的URL【发布时间】:2017-12-1116:43:45【问题描述】:我一直在寻找和尝试不同的东西,但人手... 查看详情

查询以获取具有或不具有组连接的多行

】查询以获取具有或不具有组连接的多行【英文标题】:querytogetmultiplerowswithorwithoutgroupconcat【发布时间】:2012-07-1613:07:29【问题描述】:我的表结构如下:users:idPKusernameemailsaltpassworddate_createdquestions:idPKuser_idFK(users)titledate_createdd... 查看详情

sharepoint 是不是具有逐项权限,就像它具有逐项权限一样

】sharepoint是不是具有逐项权限,就像它具有逐项权限一样【英文标题】:doessharepointhaveitemwisepermissions,justlikeithaslistwisepermissionssharepoint是否具有逐项权限,就像它具有逐项权限一样【发布时间】:2011-01-1203:26:22【问题描述】:(... 查看详情

Java - 无法创建具有 777 权限的目录(改为具有 775)[重复]

】Java-无法创建具有777权限的目录(改为具有775)[重复]【英文标题】:Java-unabletocreatedirectorywith777permission(has775instead)[duplicate]【发布时间】:2017-06-1204:06:02【问题描述】:我正在尝试创建具有公共写入权限的目录。为了简化事情... 查看详情

具有对象元素的嵌套数组模式返回具有空对象的数组

】具有对象元素的嵌套数组模式返回具有空对象的数组【英文标题】:Anestedarrayschemawithobjectelementreturnsanarraywithemptyobject【发布时间】:2020-01-2408:58:32【问题描述】:我想要对象数组,即teamMembers应该是一个数组,并且应该将对象... 查看详情

具有实时数据的 UITableView 也同时具有用户交互

】具有实时数据的UITableView也同时具有用户交互【英文标题】:UITableViewwithlivedataalsohasuserinteractionsametime【发布时间】:2011-10-0208:54:40【问题描述】:我正在进行概念验证项目。那就是使用UITableView来显示一些实时数据。“实时数... 查看详情

如何为具有生命周期'a的结构实现具有'静态生命周期的特征?

】如何为具有生命周期\\\'a的结构实现具有\\\'静态生命周期的特征?【英文标题】:Howtoimplementatraitwith\'staticlifetimeforastructwithlifetime\'a?如何为具有生命周期\'a的结构实现具有\'静态生命周期的特征?【发布时间】:2019-08-0500:32:03... 查看详情

具有 VARIANT 成员的 VC++ 类对象具有奇怪的行为

】具有VARIANT成员的VC++类对象具有奇怪的行为【英文标题】:VC++classobjectswithaVARIANTmemberhavestrangebehavior【发布时间】:2016-10-2001:13:02【问题描述】:我在下面定义了一个类:classCVariablepublic:CVariable(CStringstrData,intnNum);CVariable(BSTRbsDat... 查看详情

如何在具有多列的单行中找到具有最大值的列?

】如何在具有多列的单行中找到具有最大值的列?【英文标题】:Howtofindthecolumnwithmaximumvaluewithinasinglerowwithmultiplecolumns?【发布时间】:2020-04-1814:31:50【问题描述】:我有一个临时表如下:|----------|------------|-------------|--------|-----... 查看详情

编写一个car类,具有string类型的属性品牌,具有功能drive;

24.编写一个Car类,具有String类型的属性品牌,具有功能drive;定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速;定义主类E,在其main方法中分别创建Aodi和Benchi的对象并测试对象的特性。packagezuoye;publicclassCat{ Stri... 查看详情

具有实体框架的具有多个线程的单一上下文

】具有实体框架的具有多个线程的单一上下文【英文标题】:SinglecontextwithmanythreadswithEntityFramework【发布时间】:2014-12-3118:54:59【问题描述】:我有以下:awaitTask.WhenAll(Task.Run(()=>HandleJob("one"),Task.Run(()=>HandleJob("two"),Task.Run(()=&... 查看详情