простой настраиваемый класс расширяет представление

я хочу создать собственный класс представления. Но я получаю сообщение об ошибке при запуске приложения.

вот мой класс:

package test.start;

import android.util.AttributeSet;
import android.view.*;
import android.graphics.*;
import android.content.Context;

public class control extends View{
    private Paint paint;

    public control(Context context, AttributeSet attrs, int defStyle){
        super(context, attrs, defStyle);
        init();
    }

    public void init(){
        paint = new Paint();
        paint.setTextSize(12);
        paint.setColor(0xFF668800);
        paint.setStyle(Paint.Style.FILL);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawText("TEEEST", 100, 100, paint);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        this.setMeasuredDimension(150,200);     
    }
}

и main.XML

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 
        android:layout_width="fill_parent" 
        xmlns:android="http://schemas.android.com/apk/res/android" 
        android:layout_height="fill_parent" android:orientation="vertical">
        <TextView android:id="@+id/textView1" android:text="@string/text" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
        <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tableLayout1">
            <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:background="@drawable/custom_button" android:layout_weight="1"></Button>
            <Button android:layout_width="wrap_content"  android:id="@+id/button1" android:layout_height="40dip" android:text="@string/button" android:layout_weight="1"></Button>
            <test.control 
              android:id="@+id/control" 
              android:layout_width="match_parent" 
              android:layout_height="match_parent"> </test.control>
        </TableLayout>
    </LinearLayout>

Сообщение об ошибке:

Невозможно запустить действие ComponentInfo {de.me.start / test.start.StartActivitiy}: android.view.InflateException: двоичный файл XML, строка № 10: ошибка наполнения класса test.start.control Blockquote

Но я могу просмотреть элемент управления в графическом виде.


person passsy    schedule 21.03.2011    source источник


Ответы (2)


Попробуйте предоставить другую версию конструктора:

public control(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}
person alex.zherdev    schedule 21.03.2011

Вы должны объявить его в XML следующим образом:

<view class="de.test.start.control"
              android:id="@+id/control" 
              android:layout_width="match_parent" 
              android:layout_height="match_parent"> </view>
person MByD    schedule 21.03.2011
comment
я сделал. есть ли какой-либо пример проекта с предопределенным классом расширяет представление? - person passsy; 21.03.2011
comment
@Passy Привет, Пасси, нашел ли ты какой-нибудь пример проекта, который искал? ... Пожалуйста, поделитесь с нами, если таковой имеется. Спасибо - person Nandagopal T; 03.03.2012