【问题标题】:Overriding onDraw() for an EditText widget with a blank implementation has no effect为具有空白实现的 EditText 小部件覆盖 onDraw() 无效
【发布时间】:2010-10-15 18:45:00
【问题描述】:

我正在尝试创建一个“隐藏的编辑视图”,它将为我提供在 Android 上的第 3 方 GUI 中进行文本编辑的功能。我认为让它不绘制的最简单方法是使用 no-op 覆盖 onDraw();但是它没有任何效果。我添加了一条日志语句来检查它是否被调用。有谁知道为什么它仍在绘制?

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

【问题讨论】:

    标签: android user-interface


    【解决方案1】:

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

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

    【讨论】:

    • ((EditText) findViewById(R.id.MyEditTextId)).setBackgroundDrawable(android.R.color.transparent);
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 2021-10-26
      • 2010-12-09
      • 2022-01-25
      • 1970-01-01
      • 2011-02-28
      相关资源
      最近更新 更多