Android自定义view之EditText中显示提示文本,在提示文本后面可输入文本示例
16lz
2021-01-26
看到书上写的关于如何在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(安卓)自定义View(二)实现环形进度条
- android 控件 自动提示(AutoCompleteTextView)
- android 数字输入限制工具
- 安卓简易计算器
- Android富文本
- 强制改变默认输入法
- Android(安卓)通知提示功能
- Android(安卓)Studio入门小例子
- 读取网路图片