Android组件实现左滑露出右侧操作按钮

一、最终效果

说在最前:

本例不包含任何第三方库,不集成任何轮子,全部使用Android自带的UI组件和标准事件。

滑动方向可任意修改,滑动效果可放置在任何View组件上。

先来看最终效果,下图左侧的蓝色就是向左滑动后的view,而右侧的三个按钮就是滑动后显示出来的操作按钮:

二、思路

1.利用FrameLayout的布局顺序效果,后布局的元素会遮挡先前布局的元素

2.使用一个CardView容器,将FrameLayout及其中的遮挡层、下方的操作按钮等全部都放在这个CardView容器中,形成一个整体组件

3.使用View的基本事件:

- OnLongClickListener

- OnTouchListener

要注意的是,如果只实现OnTouchListener,而不实现OnLongClickListener,是无法触发滑动效果的。

扫描二维码关注公众号,回复: 15975873 查看本文章

三、UI布局

先来看一下整个UI布局的层次结构:

忽略那些警告吧...

在最外层,我们使用一个CardView来作为容器在这个CardView里面,放入一个FrameLayout布局,并且使这个FrameLayout的宽度和高度撑满CardView。

在FrameLayout的下一层,有两个LinearLayout布局,这里会出现第一个需要注意的地方,由于FrameLayout的特性,后加入的LinearLayout会遮挡先加入的。

因此,先加入的LinearLayout中,放置了一个TextView,用来挤占位置,之后放置三个按钮,这三个按钮就是左滑露出来的操作按钮。

而后加入的LinearLayout里,由于本例不涉及什么业务,因此只是把它设置了一个明亮的蓝色,以便观察。

<androidx.cardview.widget.CardView
    android:id="@+id/CARD_VIEW_EFFECT"
    android:layout_width="0dp"
    android:layout_height="64dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="16dp"
    android:layout_marginEnd="8dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/TEXT_VIEW_TITLE" >

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:id="@+id/LINEAR_LAYOUT_DASHBOARD"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView5"
                android:layout_width="

猜你喜欢

转载自blog.csdn.net/freezingxu/article/details/123797322