Android自定义view之EditText中显示提示文本,在提示文本后面可输入文本示例

看到书上写的关于如何在EditText中显示提示文本,在提示文本后面可输入文本示例?案例,于是按照方案进行实践,

大致效果如图:

解析:在EditText内部显示提示文本(这部分被锁,不可删除和修改,文本在后面输入)一般可以通过android:drawableLeft来实现。首先要做一个带有提示文本的图像(文字当做图像来显示),并通过android:drawableLett属性指定该图像文件的资源ID.但这种方法并不灵活,如果想换提示文本,就需要换图像。当然,另一种方法就是通过android:paddingLeft属性和Canvas来实现,这种方法可以更灵活地处理提示文本。

答案:可以直接在EditText找那个绘制提示文本,首先应编写一个继承自EditText的类,并覆盖onDraw方法,在该方法中绘制提示文本,代码如下:

 @Override
    protected void onDraw(Canvas canvas) {
        Paint paint = new Paint();
        paint.setTextSize(30);
        paint.setColor(Color.GRAY);
        //绘制提示文字  运行时可看到在该控件的左侧有灰色的提示性文字,
        canvas.drawText("请输入提示文本:",2,getHeight()/2+5,paint);
        super.onDraw(canvas);
    }

如上,绘制完提示文本后,需要在提示文本后面输入文本,这需要使用android:paddingLeft属性根据提示文本的宽度设置开始输入文本的位置,例如,android:paddingLeft=“100dp”,表示从左侧100个dp开始输入文本。

具体实践代码为:

package com.example.zhouxueli.myapplication;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;

public class EditTextViewSelf extends android.support.v7.widget.AppCompatEditText {

    public EditTextViewSelf(Context context) {
        super(context);
    }

    public EditTextViewSelf(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public EditTextViewSelf(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        Paint paint = new Paint();
        paint.setTextSize(30);
        paint.setColor(Color.GRAY);
        //绘制提示文字  运行时可看到在该控件的左侧有灰色的提示性文字,
        canvas.drawText("请输入提示文本:",2,getHeight()/2+5,paint);
        super.onDraw(canvas);
    }
}

在布局文件中添加如上自定义的view



 

在布局文件中加入该按钮,并设置一般的文字,作为辅助验证,当然,也可以在运行时,

通过界面输入,进行测试

 EditText editText=findViewById(R.id.et_textView);
 editText.setText("我喜欢吃西瓜");

  

因为是EditText 所以可以在手机运行界面更改用户输入的内容,测试如下

 

你可能感兴趣的:(Android)