android关于实现EditText中加多行下划线的的一种方法

简介:

1. 重写EditText

public class LinedEditText extends EditText {
     private Paint linePaint;
     private float margin;
     private int paperColor;
 
     public LinedEditText(Context paramContext, AttributeSet paramAttributeSet) {
         super(paramContext, paramAttributeSet);
         this.linePaint = new Paint();
     }
 
     protected void onDraw(Canvas paramCanvas) {
         paramCanvas.drawColor(this.paperColor);
         int i = getLineCount();
         int j = getHeight();
         int k = getLineHeight();
         int m = 1 + j / k;
         if (i < m)
             i = m;
         int n = getCompoundPaddingTop();
         paramCanvas.drawLine(0.0F, n, getRight(), n, this.linePaint);
         for (int i2 = 0;; i2++) {
             if (i2 >= i) {
                 setPadding(10 + (int) this.margin, 0, 0, 0);
                 super.onDraw(paramCanvas);
                 paramCanvas.restore();
                 return;
             }
             n += k;
             paramCanvas.drawLine(0.0F, n, getRight(), n, this.linePaint);
             paramCanvas.save();
         }
     }
 
 }

这段代码,并不复杂没有加注释,学过Java的同学应该不会吃力。

2.在布局文件中使用

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical" >
 
     <com.example.storetest.LinedEditText
         android:id="@+id/et1"
         android:layout_width="fill_parent"
         android:layout_height="200dp"
         android:gravity="top"
         android:inputType="textMultiLine" />
 
 </LinearLayout>

注意:使用EditText控件时,不再使用EditText前缀,而是重写之后完整路径的包名+类名(如com.example.storetest.LinedEditText)。


3.在使用时与正常调用EditText时一致。


相关文章
|
4月前
|
数据库 Android开发
Android使用EditText+Listview实现搜索效果(使用room模糊查询)
本文介绍如何在Android中使用EditText与ListView实现搜索功能,并结合Room数据库完成模糊查询。主要内容包括:Room的模糊查询语句(使用`||`代替`+`号)、布局美化(如去除ListView分割线和EditText下划线)、EditText回车事件监听,以及查询逻辑代码示例。此外,还提供了相关扩展文章链接,帮助读者深入了解ListView优化、动态搜索及Room基础操作。
307 65
|
4月前
|
Android开发 开发者
Android自定义view之利用drawArc方法实现动态效果
本文介绍了如何通过Android自定义View实现动态效果,重点使用`drawArc`方法完成圆弧动画。首先通过`onSizeChanged`进行测量,初始化画笔属性,设置圆弧相关参数。核心思路是不断改变圆弧扫过角度`sweepAngle`,并调用`invalidate()`刷新View以实现动态旋转效果。最后附上完整代码与效果图,帮助开发者快速理解并实践这一动画实现方式。
129 0
|
2月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
141 11
|
3月前
|
JavaScript Java API
ArkUI-X与Android桥接通信之方法回调
本文介绍了ArkUI与Android平台之间的消息传递机制,涵盖双向数据交互、方法调用及不同数据类型的处理。主要内容包括:1) ArkUI调用Android方法,通过`callMethod`实现;2) Android调用ArkUI方法,借助`registerMethod`注册并调用;3) ArkUI监听Android方法,支持方法注册与注销;4) 带回调的跨平台方法调用,支持无参与有参场景;5) 不同数据类型(如字符串、数组、对象)的传递示例。代码示例展示了TypeScript和Java的实现细节,帮助开发者理解桥接机制的具体应用。
|
4月前
|
Java API Android开发
Android实现EditText的抖动效果
本文介绍Android开发中的**samples**资源,适合初学者学习。文中的动画效果源自samples(如API Demos展示)。通过调用`AnimationUtils.loadAnimation`实现摇晃动画,核心代码包括Java文件调用、shake.xml定义水平位移及cycle_7.xml设置循环次数。欢迎留言交流!
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
506 2
|
11月前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
353 15
Android 系统缓存扫描与清理方法分析
|
12月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
219 2
|
Android开发
Android经典实战之Textview文字设置不同颜色、下划线、加粗、超链接等效果
本文介绍了 `SpannableString` 在 Android 开发中的强大功能,包括如何在单个字符串中应用多种样式,如颜色、字体大小、风格等,并提供了详细代码示例,展示如何设置文本颜色、添加点击事件等,助你实现丰富文本效果。
856 4
|
Android开发
Android在rootdir根目录创建自定义目录和挂载点的方法
本文介绍了在Android高通平台的根目录下创建自定义目录和挂载点的方法,通过修改Android.mk文件并使用`LOCAL_POST_INSTALL_CMD`变量在编译过程中添加目录,最终在ramdisk.img的系统根路径下成功创建了`/factory/bin`目录。
567 1

热门文章

最新文章