自定义RelativeLayout的子视图不会出现在前面

时间:2013-12-10 04:48:10

标签: android relativelayout android-canvas

我有一个自定义的相对布局(一个扩展到RelativeLayout的类)。我使用方法dispatchDraw()在画布上绘制一些位图。我想在这个画布的顶部显示一个编辑文本框。所以我创建了一个EditText的新实例并将其带到了前面。 EditText会添加到布局中,但不会出现在前面。当我删除画布绘图代码时,会出现编辑文本。 如果您知道将EditText带到画布前面的方法,请帮助我。

public class EditCardLayout extends RelativeLayout {

            public EditCardLayout (Context context, AttributeSet attrs) {       
                super(context, attrs);
                this.context = context;         
                editText = new EditText(context);
                editText.setText("My Text");
                addView( editText );
                editText.bringToFront();
             }
        @Override
            protected void dispatchDraw(Canvas canvas) {
                super.dispatchDraw(canvas);
                // some bitmaps are drawn here...
            }
        }

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#eceadb"
    android:gravity="center">

    <editCard.EditCardLayout
       android:id="@+id/cardEditView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentTop="true" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

您添加元素的顺序是什么?根据{{​​3}},z顺序受绘制元素的顺序的影响,最后一个绘制在顶部。尝试最后添加edittext。