Kotlin 实现长按TextView弹出自定义复制+全选框+PopupWindow的功能

2022-07-20 08:55:35

一、测试
第一图CSDN APP原效果,第二gif和第三图实现:

二、项目,Module项目代码中可以看,最好不要改

三、理解
1.MainActivity.kt代码,看一下说明

class MainActivity:AppCompatActivity(){privatevar mSelectableTextHelper: SelectableTextHelper?=nulloverridefunonCreate(savedInstanceState: Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)
        mSelectableTextHelper= SelectableTextHelper.Builder(tv_test)//选中文本的背景颜色.setSelectedColor(resources.getColor(R.color.selected_blue))//游标的大小.setCursorHandleSizeInDp(20f)//选择游标的颜色.setCursorHandleColor(resources.getColor(R.color.cursor_handle_color)).build()}}

整个自定义的复制全选功能视图上主要有三个部分:

  • 操作框
  • 选中文本
  • 选择游标

在具体实现中有以下要点:

  • 自定义选择游标,可以拖动定位选中文本,大小可以设置
  • 文本的选中状态
  • 操作框的显示,以及对应操作的处理
  • 在可滑动布局中的特殊处理,例如在ScrollView中,当视图滚动时隐藏或者移动选择游标,隐藏操作框,停止滑动时重新显示选择游标和操作框
  • 选中文本后,点击TextView取消选择

2.Module项目library中有两个视图布局,1、操作框无箭头,2、操作框有箭头

layout_operate_windows.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/bg_operate_window"android:orientation="horizontal"android:paddingLeft="5dp"android:paddingRight="5dp"><TextViewandroid:id="@+id/tv_copy"android:text="@string/copy"style="@style/OperateTextView"/><TextViewandroid:id="@+id/tv_select_all"android:text="@string/select_all"style="@style/OperateTextView"/></LinearLayout>

layout_operate_windows2.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:id="@+id/linearLayout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/bg_operate_window"android:orientation="horizontal"android:paddingLeft="5dp"android:paddingRight="5dp"><TextViewandroid:id="@+id/tv_copy"style="@style/OperateTextView"android:text="@string/copy"/><TextViewandroid:id="@+id/tv_select_all"style="@style/OperateTextView"android:text="@string/select_all"/></LinearLayout><ImageViewandroid:id="@+id/iv_triangle"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignTop="@+id/tv_copy"android:layout_alignParentEnd="true"android:layout_alignParentRight="true"android:layout_marginTop="41dp"android:layout_marginEnd="245dp"android:layout_marginRight="253dp"android:src="@drawable/triangle_down"/></RelativeLayout>

四、下载源码github地址:Kotlin 实现长按TextView弹出自定义复制+全选框+PopupWindow的功能

  • 作者:彬sir哥
  • 原文链接:https://blog.csdn.net/qq_35091074/article/details/125297846
    更新时间:2022-07-20 08:55:35