Как ADT определяет, что это макет?

#android #android-layout #android-view

#Android #android-layout #android-просмотр

Вопрос:

Я написал класс, следуя некоторым руководствам по Android. Класс хранится как «ToDoListsrccom.example.todolistToDoListItemView.java «

 package com.example.todolist;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.TextView;

public class ToDoListItemView extends TextView{

private Paint marginPaint,linePaint;
private int paperColor;
private float margin;

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

public ToDoListItemView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public ToDoListItemView(Context context) {
    super(context);
    init();
}

private void init(){
    Resources myResources = getResources();

    //Create the paint resources to be used in the onDraw method
    marginPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    marginPaint.setColor(myResources.getColor(R.color.notepad_margin));
    linePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    linePaint.setColor(myResources.getColor(R.color.notepad_lines));

    //Get paper background color and margin width
    paperColor = myResources.getColor(R.color.notepad_paper);
    margin = myResources.getDimension(R.dimen.notepad_margin);
}

@Override
public void onDraw(Canvas canvas) {
    canvas.drawColor(paperColor);

    //Draw ruled lines
    canvas.drawLine(0, 0, 0, getMeasuredHeight(), linePaint);
    canvas.drawLine(0, getMeasuredHeight(), getMeasuredWidth(), getMeasuredHeight(), linePaint);

    //Draw margin
    canvas.drawLine(margin, 0, margin, getMeasuredHeight(), marginPaint);

    //Move text across from the margin
    canvas.save();
    canvas.translate(margin, 0);

    //Render
    super.onDraw(canvas);
    canvas.restore();
}
  

}

Когда я создаю новый макет в «ToDoList res layout» с любым именем, я набираю «com.», он автоматически рекомендует мне путь «com.example.todolist.ToDoListItemView «Я хотел бы знать, какая отличительная особенность в моем «ToDoListItemView.java «заставил eclipse поверить, что это макет?

Ответ №1:

Он рекомендует, ToDoListItemView потому что это CustomView .

Eclipse распознает, что ваш класс ToDoListItemView является производным от TextView , который является производным от View .

В макете могут использоваться все классы, расширяющиеся View .

Если ваш класс каким-либо образом не расширяется View , его нельзя поместить в макет.

Комментарии:

1. Привет, это снова Филипп… Привет 🙂

2. Хорошо … Я попробовал со списком, это сработало. Итак, да… вы правы. Большое вам спасибо