Кастомный контроллер на канве

Рейтинг: 1Ответов: 1Опубликовано: 16.11.2014

Доброго времени суток.

Есть наследник класса view, в нем на канве отрисовываются кастомные кнопки.
Как его подключить в xml разметке?

Обновление

Ну, я так и пытался:

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

    <com.planningtask.planningtime.ControllerTime/>
</LinearLayout>

Получил:

11-16 21:38:07.680: E/AndroidRuntime(30791): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.planningtask.planningtime/com.planningtask.planningtime.StartLaunch}: android.view.InflateException: Binary XML file line #7: Error inflating class com.planningtask.planningtime.ControllerTime

Ответы

▲ 3Принят

Например, класс MyControllerView находится в каталоге ru.my.app, тогда в xml он будет выглядеть вот так:

<ru.my.app.MyControllerView  
    <!-- здесь расписываете все нужные атрибуты -->  
</ru.my.app.MyControllerView>

Если вы наследуетесь от View и хотите подключить элемент из xml-разметки, то помимо текущего конструктора (например, (Context mContext)) вы должны сделать как минимум ещё один ИЛИ заменить его:

public название_класса(Context con, AttributeSet set) {
    //Вот сюда переносим весь код из
    //Старого конструктора, а его убираем
}

Остальные конструкторы, используются редко и крайне редко соответственно:

public название_класса(Context con) {}
public название_класса(Context con, AttributeSet set, int ds) {}

Обновление

Да, иначе получите ещё один вылет. Минимальный "набор" атрибутов - android:layout_width и android:layout_height.