android - 自定义 RelativeLayout 的 subview 不会出现在前面

标签 android android-relativelayout android-canvas

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

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>

最佳答案

你添加元素的顺序是什么?根据docs , z 顺序受元素绘制顺序的影响,最后绘制的元素在最上面。尝试最后添加编辑文本。

关于android - 自定义 RelativeLayout 的 subview 不会出现在前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20486332/

相关文章:

java - 如何使用Retrofit 2.0从其他线程获得响应

Android相对布局对齐父权

第一次运行应用程序后,Android Studio Picasso 加载程序无法正常工作

java - 如何跨不同设备缩放自定义 View

android - lockCanvas是什么意思(详解)

安卓 N : NDK Apps Linking to Platform Libraries

android - 执行选项卡切换时避免重新创建相同的 View

java - 在AIDE中使用克隆的Git repo Andengine编译报错

android RelativeLayout以编程方式更改高度

android - 有效地将位图数组转换为视频