[Android开发] 自定义TextView,可以自定义四个方向Drawable的大小、距离文字的距离、设置点击监听等

  • Post author:
  • Post category:其他


我们在用TextView的时候,有时候文本前后都会有一个图片,而这个图片大小在布局中是无法设置的,只有通过 setCompoundDrawables 设置时,给定Drawable的宽高才可以,这无疑是比较麻烦的,如果设置多个方向的图片,又不能单独设置距离文本的距离,另外这个图片是不能够单独点击的,为此我写了一个加强版的

PerfectTextView


传送门:

https://github.com/FlyJingFish/PerfectTextView

支持功能:

1、四个位置的图片在布局中也可单独设置大小

2、四个位置的图片可以单独设置距离文字的距离

3、四个位置的图片可以设置点击、双击、长按事件监听

4、支持设置选中(

setSelected

)时的文本

5、支持单独为四个位置中的一个设置大小、图片、距离文本距离

6、支持为文本区域设置背景

使用起来也很简单

布局中

<com.flyjingfish.perfecttextviewlib.PerfectTextView
    android:id="@+id/hollowTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:background="@drawable/bg_press"
    android:gravity="center"
    android:textStyle="bold"
    android:padding="10dp"
    android:textColor="@color/press_color"
    android:layout_marginTop="10dp"
    app:perfect_drawableStart_width="40dp"
    app:perfect_drawableStart_height="40dp"
    app:perfect_drawableEnd_width="100dp"
    app:perfect_drawableEnd_height="100dp"
    app:perfect_drawableTop_width="20dp"
    app:perfect_drawableTop_height="20dp"
    app:perfect_drawableBottom_width="50dp"
    app:perfect_drawableBottom_height="50dp"
    android:drawablePadding="40dp"
    app:perfect_drawableStart_padding="20dp"
    app:perfect_drawableEnd_padding="10dp"
    app:perfect_drawableTop_padding="30dp"
    app:perfect_drawableBottom_padding="30dp"
    app:perfect_selected_text="@string/app_name"
    app:perfect_text_background="@drawable/bg_text_press"
    app:perfect_text_background_scope="wrappedText"
    android:drawableTop="@drawable/press_icon"
    android:drawableStart="@drawable/select_icon"
    android:drawableEnd="@drawable/select_icon"
    android:drawableBottom="@drawable/press_icon"
    android:textSize="30sp"/>

以下是监听:

textView.setOnDrawableLeftClickListener(v -> {
    Toast.makeText(this,"setOnDrawableLeftClickListener",Toast.LENGTH_SHORT).show();
    Log.e("PerfectTextView", "setOnDrawableLeftClickListener");
    binding.hollowTextView.setDrawableLeftSelected(true);
});
textView.setOnDrawableLeftDoubleClickListener(v -> {
    Toast.makeText(this,"setOnDrawableLeftDoubleClickListener",Toast.LENGTH_SHORT).show();
    Log.e("PerfectTextView", "setOnDrawableLeftDoubleClickListener");
    binding.hollowTextView.setDrawableLeftSelected(false);
});
textView.setOnDrawableLeftLongClickListener(v -> {
    Toast.makeText(this,"setOnDrawableLeftLongClickListener",Toast.LENGTH_SHORT).show();
    Log.e("PerfectTextView", "setOnDrawableLeftLongClickListener");

    return true;
});

设置图片

textView.setDrawableLeft(R.mipmap.ic_launcher_round);//设置图片
textView.setDrawableStartPadding(100);//设置距离文字距离
textView.setDrawableStartWidthHeight(100,100);//设置宽高
textView.setSelectedText("选中时显示的文本");//设置选中时显示的文本



版权声明:本文为u013077428原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。