Android 如何添加光标并激活我的编辑文本?
实际上,我正在我的android应用程序中创建一个自定义Android 如何添加光标并激活我的编辑文本?,android,android-activity,android-edittext,cursor,Android,Android Activity,Android Edittext,Cursor,实际上,我正在我的android应用程序中创建一个自定义EditText。 我所做的是创建了一个名为CustomEditText的类,在这个类中我正在绘制我的EditText。其代码如下: public class CustomEditText extends View { String mText; Context mContext; Paint paint = new Paint(); public CustomEditText(Context context) { super(
EditText
。
我所做的是创建了一个名为CustomEditText
的类,在这个类中我正在绘制我的EditText。其代码如下:
public class CustomEditText extends View {
String mText;
Context mContext;
Paint paint = new Paint();
public CustomEditText(Context context) {
super(context);
mContext = context;
paint.setColor(Color.WHITE); // You could setup the background etc here
paint.setStyle(Style.FILL);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
drawTextOnCanvas(canvas, mText);
}
private void drawTextOnCanvas(final Canvas canvas, String mText) {
canvas.drawPaint(paint);
final EditText editText = new EditText(mContext);
editText.setTextColor(BLACK);
editText.setEnabled(true);
editText.setDrawingCacheEnabled(true);
editText.measure(MeasureSpec.makeMeasureSpec(canvas.getWidth(), MeasureSpec.EXACTLY), 50);
editText.layout(0, 0, editText.getMeasuredWidth(), editText.getMeasuredHeight());
canvas.drawBitmap(editText.getDrawingCache(), 0, 0, paint);
editText.setDrawingCacheEnabled(false);
}
在main活动中使用以下代码调用此类:
CustomEditText editText = new CustomEditText(this);
setContentView(editText);
我接下来应该做什么来添加一个光标,并使这个自定义编辑文本像正常的编辑文本(这意味着它应该能够接受,选择和清除输入文本)。如果您的drawTextOnCanvas()
工作正常,只要让您的CustomEditText
扩展EditText
就可以了。(而不是视图
)
如果我正确理解您的评论,您只需执行以下操作:
public class CustomEditText extends EditText {
Context mContext;
Paint paint;
EditText editText;
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public CustomEditText(Context context) {
super(context);
paint = new Paint();
editText = new EditText(context);
mContext = context;
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.FILL);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawPaint(paint);
super.onDraw(canvas);
}
}
你的意思是显示键盘?仅仅显示键盘很简单,可以通过清单来完成。但是我想要的是像普通的editText一样实现它。我刚刚检查了你的checked,你要传递给drawTextOnCanvas
的多行文字是什么,你在哪里使用它?在你的github代码中,你只添加了height
,而不是width
,我想你的drawTextOnCanvas()
有问题,我刚刚复制了你的代码并评论了drawTextOnCanvas(canvas,mText)代码>它工作正常(因为super.ondraw()
)。那么我应该怎么做呢。。删除输入参数因为您的类仅在颜色
和样式
方面进行了自定义,对吗?除此之外,您希望它像普通的Edittext
一样运行,对吗?嘿@karthik我从它中删除了String mText
,现在它工作了,但我正在键入的内容都没有显示出来。是的,我看到了,你的目标API版本是什么?