Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何添加光标并激活我的编辑文本?_Android_Android Activity_Android Edittext_Cursor - Fatal编程技术网

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(

实际上,我正在我的android应用程序中创建一个自定义
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版本是什么?