0

TextView を継承するクラスがある

using Android.App;
using Android.Content;
using Android.Content.Res;
using Android.Runtime;
using Android.Text;
using Android.Util;
using Android.Views;
using Android.Views.InputMethods;
using Android.Widget;
using Android.OS;
using  Android.Graphics;

namespace HelloWorld
{
class TodoListItemView:TextView
{
private Paint marginPaint;
private Paint linePaint;
private int paperColor;
private float margin;

public TodoListItemView(Context context, IAttributeSet attrs, int ds): base (context, attrs, ds)
{
    init();
}

public TodoListItemView(Context context, IAttributeSet attrs) : base(context, attrs)
{
    init();
}

private void init()
{
    Resources myResources = Resources;
    marginPaint = new Paint(PaintFlags.AntiAlias);
    marginPaint.Color = myResources.GetColor(Resource.Color.notepad_margin);
    linePaint = new Paint(PaintFlags.AntiAlias);
    linePaint.Color = myResources.GetColor(Resource.Color.notepad_lines);
    paperColor = myResources.GetColor(Resource.Color.notepad_paper);
    margin = myResources.GetDimension(Resource.Dimension.notepad_margin);

}

protected override void OnDraw(Canvas canvas)
{

    canvas.DrawLine(0, 0, Height, 0, linePaint);
    canvas.DrawLine(0, Height, Width, Height, linePaint);
    // Нарисуйте кромку
    canvas.DrawLine(margin, 0, margin, Height, marginPaint);
    // Переместите текст в сторону от кромки
    canvas.Save();
    canvas.Translate(margin, 0);
    base.OnDraw(canvas);
    canvas.Restore();
}

}
}

todolist_item.xml をマークしています

<?xml version="1.0" encoding="utf-8"?>
<TodoListItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:scrollbars="vertical"
android:textColor="@color/notepad_text"
android:fadingEdge="vertical"
/>

TodoListItemView を指定しましたが、その名前は機能しません。マークアップを開くときにエラーが発生しました。Javaにも例がありますので、パッケージはすべて明確です

<?xml version="1.0" encoding="utf-8"?>
<com.paad.todolist.TodoListItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:scrollbars="vertical"
android:textColor="@color/notepad_text"
android:fadingEdge="vertical"
/>

どの名前を表示しますか?

4

2 に答える 2

1

クラスで使用したのと同じ名前空間を使用する必要がありますが、違いがあります。名前空間は小文字にする必要があります。

namespace HelloWorld
{
class TodoListItemView:TextView
{

...

}

そしてあなたのaxmlで

<?xml version="1.0" encoding="utf-8"?>
<helloworld.TodoListItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:scrollbars="vertical"
android:textColor="@color/notepad_text"
android:fadingEdge="vertical"
/>
于 2013-01-15T19:56:16.707 に答える
0

私は使用monodroidしていませんが、レイアウトでは次のように使用する必要があると思います。

<HelloWorld.TodoListItemView
...
/>

名前空間はJavaのパッケージと同じであると想定しています。

于 2013-01-15T15:33:23.710 に答える