前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎样设置EditText内部文字被锁定不可删除和修改,而文字只能在后面输入

怎样设置EditText内部文字被锁定不可删除和修改,而文字只能在后面输入

作者头像
非著名程序员
发布2018-02-09 10:11:00
1.5K0
发布2018-02-09 10:11:00
举报
文章被收录于专栏:非著名程序员非著名程序员

在做项目的时候,我曾经遇到过这样的要求,就是跟百度贴吧客户端上的一样,在回复帖子的时候,在EditText中显示回复人的名字,而且这个名字不可以修改和删除,说白了就是不可操作,只能在后面输入内容。

非著名程序员

在EditText内部显示这样的提示文字,部分锁定,不可操作,其实一般有两种方法。

第一种:一般可以通过android:drawableLeft属性来实现,那就是做一个带有提示文字的图片,通过android:drawableLeft指定资源id,去加载。但是这样做有一个缺点,就是非常的不灵活,要想修改个提示文字,还得需要更换图片,太麻烦了。

第二种:就是通过重写EditText来实现,编写一个类来继承EditText,去覆盖其中的onDarw()方法,具体用法如下:

代码语言:js
复制
package com.pandastudios.pandastudios;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.EditText;
/**
 * Created by loonggg on 15/8/29.
 */
public class MyEditText extends EditText{
    private String str;
    public MyEditText(Context context){
        super(context);
    }
    public MyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public MyEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }
    public MyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    public void setStr(String str){
        this.str = str;
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint paint =  new Paint();
        paint.setTextSize(30);
        paint.setColor(Color.BLACK);
        paint.setAntiAlias(true);
        //编写提示文字。
        canvas.drawText(str,2,getHeight()/2+5,paint);
        super.onDraw(canvas);
    }
}

然后在布局文件中这么使用:

代码语言:js
复制
<com.pandastudios.pandastudios.MyEditText
       android:id="@+id/myEditText"
       android:layout_width="wrap_content"
       android:paddingLeft="20dp"
       android:layout_height="wrap_content" />

当然即使是重写了也得需要使用android:paddingLeft属性根据提示文字的宽度设定开始输入文字的位置。

就是这样,轻松的搞定了。以后再遇到类似问题,就可以这么解决了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非著名程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档