专业编程基础技术教程

网站首页 > 基础教程 正文

怎样设置EditText内部文字被锁定不可删除和修改

ccvgpt 2024-08-02 12:03:03 基础教程 10 ℃

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

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

怎样设置EditText内部文字被锁定不可删除和修改

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

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

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);

}

}

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

<com.pandastudios.pandastudios.MyEditText

android:id="@+id/myEditText"

android:layout_width="wrap_content"

android:paddingLeft="20dp"

android:layout_height="wrap_content" />

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

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

著名的移动互联网专家,自媒体人,运营的公众号“非著名程序员”,每天一篇原创技术分享和移动互联网知识分享,微信公众号:smart_android ,头条号和百度百家账号都是“非著名程序员”。

Tags:

最近发表
标签列表