为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Android

在做项目的时候,我曾经遇到过这样的要求,就是跟百度贴吧客户端上的一样,在回复帖子的时候,在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属性根据提示文字的宽度设定开始输入文字的位置。

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

原文链接:http://www.apkbus.com/blog-47151-59415.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消