AndroidManifest: игнорирование неизвестного XML-элемента shape - PullRequest
2 голосов
/ 09 декабря 2011

По какой-то причине мой проект Android компилируется должным образом, отлично работает как на телефонах, так и на эмуляторах, и даже включает в себя несколько файлов макетов XML с LinearLayouts, TextViews, Buttons, Images и даже пользовательскими компонентами View, но когда дело доходит до форм, это просто не могу их найти.

Вот мой код:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <solid android:color="#ffffff"/>    

    <stroke android:width="3dp"
            android:color="#ff000000"/>

    <padding android:left="1dp"
             android:top="1dp"
             android:right="1dp"
             android:bottom="1dp"/> 

    <corners android:radius="30dp"/> 
</shape>

И ошибка, которую я получаю в графическом макете в Eclipse:

com.android.layoutlib.bridge.MockView cannot be cast to android.view.ViewGroup
Exception details are logged in Window > Show View > Error Log
The following classes could not be found:
- shape (Fix Build Path, Edit XML)
- solid (Fix Build Path, Edit XML)

Я нацеливаюсь на API Google Android 2.2 Froyo.

Предложения

1 Ответ

10 голосов
/ 09 декабря 2011

Возможно, вы получаете ошибку, потому что вы помещаете этот XML в неправильное место. Приведенный выше XML-код должен находиться в каталоге res/drawable. Вы действительно не должны рисовать квадрат в макете. Нарисуйте квадрат в виде и добавьте его в макет. Или используйте изображение и добавьте его в представление через ImageView. Макет представляет собой совокупность просмотров. Если вы действительно хотите нарисовать квадрат в макете (ViewGroup), вы можете расширить его и нарисовать в методе onDraw (). Но это, вероятно, будет сложнее, чем нужно. Взгляните на Android Документы по макетам: http://developer.android.com/guide/topics/ui/index.html

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