Переопределение onDraw () для виджета EditText с пустой реализацией не имеет никакого эффекта - PullRequest
0 голосов
/ 15 октября 2010

Я пытаюсь создать «скрытый вид редактирования», который даст мне функциональность редактирования текста в стороннем GUI на Android.Я решил, что самый простой способ сделать так, чтобы он не рисовался, это просто переопределить onDraw () с помощью no-op;Однако это не имеет никакого эффекта.Я добавил запись в журнал, чтобы убедиться, что она вызывается.У кого-нибудь есть идея, почему он все еще рисуется?

    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);

Ответы [ 2 ]

1 голос
/ 16 октября 2010

Фон рисуется с помощью View.draw (). OnDraw () вызывается View.draw (), поэтому вам нужно следовать совету Mannaz и установить прозрачный цвет фона или просто установить его на ноль.

1 голос
/ 15 октября 2010

Другой способ достижения этого результата - указать фон EditText как прозрачный:

<EditText android:background="@android:color/transparent" ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...