Custom ViewGroup - PullRequest
       42

Custom ViewGroup

0 голосов
/ 12 августа 2011

Я создал свою собственную ViewGroup. Я уже добавляю виджет в представление и получаю сообщение об ошибке от редактора дизайна Eclipse (мне нужен предварительный просмотр для более быстрой / лучшей разработки).

public class MyViewGroup extends LinearLayout {
    public MyViewGroup(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.addView(new EditText(context));  // The Error Line
    }
...
}

С помощью LayoutParams ничего не меняйте:

this.addView(new Button(mcontext),
            new LinearLayout.LayoutParams(
                    LayoutParams.FILL_PARENT,
                    LayoutParams.FILL_PARENT));

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
 <...MyViewGroup android:layout_height="match_parent" android:layout_width="match_parent" android:layout_margin="2dip" android:id="@+id/Token01">    </...MyViewGroup>
</LinearLayout>

Я не вижу его на эмуляторе. Если я уберу «Строку ошибок», Дизайнер не получит ошибок. В чем был мой сбой или не удалось вывести Eclipse Designer? Но почему я не вижу его на эмуляторе / устройстве? Мое назначение - создать эту часть с пользовательскими представлениями и ViewGroup без XML.

Надеюсь, вы мне поможете и извините за мой плохой английский.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 августа 2011

Я попробовал следующее, и это работает как брелок с Android 2.3.1 и позже. Он не работал с 2.2 и ранее.

public class MyViewGroup extends LinearLayout {
   public MyViewGroup(Context context, AttributeSet attrs) {
      super(context, attrs);

      if (isInEditMode()) {
         final EditText editText = new EditText(context);
         editText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
               LayoutParams.WRAP_CONTENT));
         addView(editText);
      }
   }
}

Также обратите внимание на использование isInEditMode ().

0 голосов
/ 12 августа 2011

Если я правильно понял, в коде нет ошибок (поскольку он выполняется), но визуальный редактор не отображает его правильно.
Однажды у меня была похожая проблема (точно не помню), и я мог ее решить, изменив движок визуального редактора на версию сота.
Для этого сначала необходимо установить Honeycomb SDK (API 11 или более поздней версии). Затем в визуальном редакторе в правом верхнем углу вы можете выбрать используемый SDK. Изменить на 3.x. Может быть, это работает и для вас.

...