2013-12-10 4 views
1

У меня есть настраиваемая относительная компоновка (класс, расширенный для RelativeLayout). Я рисую некоторые растровые изображения на холсте, используя метод dispatchDraw(). И я хочу показать текстовое поле «Редактировать» поверх этого холста. Поэтому я создаю новый экземпляр EditText и вывожу его на передний план. EditText добавляет макет, но не выходит на передний план. Когда я удаляю код рисования холста, появляется текст редактирования. Помогите мне, если вы знаете способ довести EditText до передней части холста.Детский вид куска RelativeLayout не приходит на передний план

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

Какой порядок вы добавления элементов в? Согласно docs, на порядок z влияет порядок, в котором элементы рисуются, с последней вещью, нарисованной сверху. Попробуйте добавить последний текст.

+0

Согласно моему коду, я не рисую никаких просмотров EditText. Я рисую некоторые растровые изображения, которые я не представил в приведенном выше коде. Это представление EditText добавляется в Relative layout, у которого есть холст, нарисованный командой dispatchdraw(). Проблема возникает между дочерним видом и холстом родительского макета. – Wimansha

+0

Мне сложно комментировать, не видя остальной код. Можете ли вы включить код рисования и ваш xml? Кроме того, есть ли какая-то особая причина, по которой вам нужно использовать dispatchDraw? Вы можете попробовать разместить растровые изображения в FrameLayout внутри вашего RelativeLayout, чтобы увидеть, работает ли он. – GLee

+0

По вашему запросу я добавил код draw и xml. Поскольку я делаю приложение для редактирования карт, основная часть этого действия выполняется с этим диспетчером. Просмотр EditText используется для ввода пользовательских входов на карты. Я не думаю, что создание другого FrameLayout будет работать. – Wimansha

Смежные вопросы