前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android组件背景设置

Android组件背景设置

作者头像
码客说
发布2024-04-13 09:41:56
710
发布2024-04-13 09:41:56
举报
文章被收录于专栏:码客码客

前言

Android使用XML的时候,实现圆角和边框都是使用背景实现的。

如果需要剪裁成圆角,则可以使用CardView实现。

CardView

设置圆角

代码语言:javascript
复制
<androidx.cardview.widget.CardView
    android:layout_width="330dp"
    android:layout_height="166dp"
    android:layout_centerInParent="true"
    android:visibility="@{viewModel.zIsShowMsg ? View.VISIBLE : View.GONE}"
    app:cardCornerRadius="10dp">
</androidx.cardview.widget.CardView>

取消阴影

要取消或移除 CardView 的阴影,你可以调整 CardViewcardElevation 属性,并将其设置为 0dp

此外,你还可以调整 cardUseCompatPadding 属性以确保没有额外的内边距用于显示阴影。

下面是如何设置 CardView 以取消阴影的示例:

代码语言:javascript
复制
<androidx.cardview.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardElevation="0dp"
    app:cardUseCompatPadding="false">
    
    <!-- CardView的内容 -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是一个没有阴影的CardView"
        android:gravity="center"
        android:padding="16dp" />

</androidx.cardview.widget.CardView>

在这个例子中,CardViewcardElevation 设置为 0dp,以确保没有阴影。

此外,将 cardUseCompatPadding 设置为 false 可以消除由于阴影而产生的额外内边距,使 CardView 边缘更加紧凑。

内部剪裁

设置clipChildren即可

代码语言:javascript
复制
android:clipChildren="true"

背景圆角和边框

rounded_border_background.xml

代码语言:javascript
复制
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#aaFFFFFF" /> <!-- 背景颜色 -->
    <corners android:radius="10dp" /> <!-- 圆角半径 -->
    <stroke
        android:width="2dp"
        android:color="#FFFFFFff" /> <!-- 边框颜色 -->
</shape>

按钮背景

按钮可以使用selector设置点击和非点击使用不同的背景

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false" android:drawable="@drawable/rounded_border_backgroundt"/>
    <item android:state_pressed="true" android:drawable="@drawable/rounded_border_background2"/>
</selector>

涟漪效果

兼容不支持涟漪的XML

z_bg_ripple.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false" android:drawable="@drawable/rounded_border_backgroundt"/>
    <item android:state_pressed="true" android:drawable="@drawable/rounded_border_background2"/>
</selector>

添加drawable-v21文件夹 只有21版本之后才支持涟漪效果

z_bg_ripple.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?><!-- ripple 是5.0才出现的新标签-->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/text99">
    <item android:drawable="@drawable/rounded_border_background" />
</ripple>

背景多层渐变,点击涟漪

实现方式

  • 底层纯色背景。
  • 中层设置渐变,注意XML的渐变效果最多只支持3个颜色。
  • 顶层设置涟漪效果。

bg_gradient_btn.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 底层:纯色背景 -->
    <item android:top="6dp">
        <shape android:shape="rectangle">
            <solid android:color="#2B89E0" />
            <corners android:radius="6dp" />
        </shape>
    </item>
    <!-- 中间层:渐变背景 -->
    <item android:bottom="3dp" >
        <shape android:shape="rectangle">
            <gradient
                android:angle="-90"
                android:centerColor="#32C8FD"
                android:endColor="#36B3FE"
                android:startColor="#8AEFFD"
                android:type="linear" />
            <corners android:radius="6dp" />
        </shape>
    </item>
    <!-- 顶层 -->
    <item android:drawable="@drawable/bg_gradient_ripple_effect"/>
</layer-list>

添加一个涟漪效果的XML

bg_gradient_ripple_effect.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="#000000">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#33FFFFFF"/>
            <corners android:radius="6dp"/>
        </shape>
    </item>
</ripple>

注意

涟漪效果的背景不能是全透明的,如果全透明就不会出现涟漪效果,所以这里设置为白色的半透明,涟漪覆盖色就设置的纯黑色,这样才会出现较好的效果。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • CardView
    • 设置圆角
      • 取消阴影
        • 内部剪裁
        • 背景圆角和边框
        • 按钮背景
        • 涟漪效果
        • 背景多层渐变,点击涟漪
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com