如何添加光标并激活我的 editText?
How to add cursor and activate my editText?
实际上我正在我的 android 应用程序中创建一个 自定义 EditText
。
我所做的是创建了一个名为 CustomEditText
的 class,我正在其中绘制我的 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);
}
并且此 class 正在 MainActivity
中使用以下代码调用:
CustomEditText editText = new CustomEditText(this);
setContentView(editText);
接下来我应该做什么来添加一个 cursor 并使这个 CustomEditText 像正常的 editText( 这意味着它应该能够 accept, select and clear 输入文字 ).
如果您的 drawTextOnCanvas()
工作正常,只需将 CustomEditText
扩展 EditText
即可。 (而不是 view
)
如果我正确理解了您的评论,您只需这样做:
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);
}
}
实际上我正在我的 android 应用程序中创建一个 自定义 EditText
。
我所做的是创建了一个名为 CustomEditText
的 class,我正在其中绘制我的 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);
}
并且此 class 正在 MainActivity
中使用以下代码调用:
CustomEditText editText = new CustomEditText(this);
setContentView(editText);
接下来我应该做什么来添加一个 cursor 并使这个 CustomEditText 像正常的 editText( 这意味着它应该能够 accept, select and clear 输入文字 ).
如果您的 drawTextOnCanvas()
工作正常,只需将 CustomEditText
扩展 EditText
即可。 (而不是 view
)
如果我正确理解了您的评论,您只需这样做:
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);
}
}