You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何创建顶部带缺口的TicketView?

实现顶部带缺口的TicketView解决方案

由于com.vipulasri:ticketview库本身没有提供顶部缺口的配置属性,无法通过修改现有属性实现你要的效果,推荐通过自定义背景Drawable的方式来实现,步骤如下:

1. 创建带顶部缺口的背景Drawable

在res/drawable目录下新建ticket_background.xml,通过layer-list组合形状,用与父布局背景色一致的圆形模拟顶部缺口:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 主背景:圆角矩形 -->
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#FF5733"/>
            <corners android:radius="4dp"/>
        </shape>
    </item>
    <!-- 顶部左侧缺口:用圆形覆盖主背景顶部 -->
    <item
        android:width="20dp"
        android:height="20dp"
        android:top="-10dp"
        android:left="-10dp">
        <shape android:shape="oval">
            <!-- 这里的颜色要和TicketView所在父布局的背景色一致 -->
            <solid android:color="@android:color/white"/>
        </shape>
    </item>
    <!-- 顶部右侧缺口 -->
    <item
        android:width="20dp"
        android:height="20dp"
        android:top="-10dp"
        android:right="-10dp">
        <shape android:shape="oval">
            <solid android:color="@android:color/white"/>
        </shape>
    </item>
</layer-list>

2. 修改TicketView布局配置

去掉原布局中的tv_backgroundColor属性,改用自定义的背景Drawable,并添加顶部padding避免文字被缺口遮挡:

<com.vipulasri.ticketview.TicketView
    android:id="@+id/ticketView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/ticket_background"
    android:paddingTop="10dp"
    app:tv_cornerRadius="4dp"
    app:tv_dashHeight="10dp"
    app:tv_dashGap="4dp"
    app:tv_text="Sample Ticket"
    app:tv_textColor="#FFFFFF"
    app:tv_textSize="16sp" />

注意事项

  • 如果TicketView所在的父布局背景不是白色,需要把Drawable中圆形的solid颜色改成父布局的背景色,才能正确显示缺口效果。
  • 可以调整Drawable中圆形的width/height以及偏移值(top/left/right),来改变缺口的大小和位置。

内容的提问来源于stack exchange,提问作者vyshnav vyshu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 21:38:34