Android 使用空白实现覆盖EditText小部件的onDraw()无效

Android 使用空白实现覆盖EditText小部件的onDraw()无效,android,user-interface,Android,User Interface,我正在尝试创建一个“隐藏编辑视图”,它将在Android上的第三方GUI中为我提供文本编辑功能。我认为让它不绘制的最简单的方法就是用no op覆盖onDraw();但是它没有任何效果。我添加了一个log语句来检查是否正在调用它。有人知道为什么还在画吗 private class HiddenEditText extends EditText { public HiddenEditText(Context context) { super(context);

我正在尝试创建一个“隐藏编辑视图”,它将在Android上的第三方GUI中为我提供文本编辑功能。我认为让它不绘制的最简单的方法就是用no op覆盖onDraw();但是它没有任何效果。我添加了一个log语句来检查是否正在调用它。有人知道为什么还在画吗

    private class HiddenEditText extends EditText
{
    public HiddenEditText(Context context)
    {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas)
    {
        Log.e("DBG", "onDraw()");
    }
}

    // ...    

EditText EditTextGreen = new HiddenEditText(this);
    EditTextGreen.setFocusable(true);
    EditTextGreen.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));

    layout.addView(EditTextGreen, 0);

实现此结果的另一种方法是将
EditText
的背景指定为透明:

<EditText android:background="@android:color/transparent" ...

背景由View.draw()绘制。onDraw()由View.draw()调用,因此您需要遵循Mannaz的建议,将背景设置为透明颜色或仅将其设置为null。

((EditText)findViewById(R.id.MyEditTextId)).setBackgroundDrawable(android.R.color.transparent);