#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. Хорошо … Я попробовал со списком, это сработало. Итак, да… вы правы. Большое вам спасибо