Как использовать пользовательскую Android ViewGroup в XML? - PullRequest
3 голосов
/ 10 июля 2010

У меня есть класс, который расширяет FrameLayout и называется NoteView. Это публичный класс высшего уровня.

Это прекрасно работает, когда я создаю пользовательский интерфейс из Java-кода, но я не могу понять, как использовать его в XML. Я попытался вставить полностью определенное имя класса так же, как и для пользовательского представления, но получаю исключение ClassCastException: android.view.View cannot be cast to android.view.ViewGroup, когда действие пытается наполнить XML.

Мне удалось найти учебники только в пользовательских представлениях, а не в пользовательских группах. Что мне нужно сделать, чтобы использовать NoteView, как если бы я использовал FrameLayout в 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">
 <test.cjb.sandbox.NoteView
 android:id="@+id/noteview"
 android:layout_width="fill_parent"
 android:layout_height="100dp"
 android:background="#FF0000"
 android:layout_gravity="right">
 </test.cjb.sandbox.NoteView>
  <Button
    android:id="@+id/button"
    android:layout_width="100dp"
    android:layout_height="fill_parent"
    android:text="Sibling Button"/>
</LinearLayout>

Но это вызывает вышеприведенное исключение:

<?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" >
 <test.cjb.sandbox.NoteView
 android:id="@+id/noteview"
 android:layout_width="fill_parent"
 android:layout_height="100dp"
 android:background="#FF0000"
 android:layout_gravity="right">
    <Button
    android:id="@+id/button"
    android:layout_width="100dp"
    android:layout_height="fill_parent"
    android:text="Child Button"/>
 </test.cjb.sandbox.NoteView>

</LinearLayout>

1 Ответ

2 голосов
/ 11 июля 2010

В будущем, когда вы будете жаловаться на исключения, рассмотрите возможность включения полной трассировки стека, особенно когда люди запрашивают полную трассировку стека, поскольку полная трассировка стека может содержать информацию, которая имеет отношение к предоставлению вам ответа.Вы можете получить полную трассировку стека через adb logcat, DDMS или перспективу DDMS в Eclipse.

Не имея этого, все, что я могу сделать, это указать вам этот пример проекта , который расширяетLinearLayout в пользовательский виджет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...