1

これが取引です。

私はImageViewの拡張についてこのコードを調べていました:

http://marakana.com/forums/android/examples/98.html

そして、他のいくつかのビューとともに、新しいビューを既存のxmlレイアウトファイルに追加するにはどうすればよいか疑問に思いました。

すでにメインの線形レイアウト内でこれを実行しました:

<FrameLayout android:id="@+id/FrameLayout01" android:layout_width="300dp" android:layout_height="300dp">
        <com.marakana.Rose android:layout_height="wrap_content" android:layout_width="wrap_content"/>

ただし、問題は、この方法ではonDrawメソッドが呼び出されないことです。

誰かがこれに対する解決策を提案できますか?CustomViewsをxmlレイアウトと組み合わせるいくつかの例かもしれません。

tnx。

4

3 に答える 3

2

res / values / attrs.xmlに定義を追加しましたか?

<declare-styleable name="Rose">
</declare-styleable>

xml属性を追加しない場合に必要かどうかはわかりません...

また、com.marakana.Roseコードを投稿すると役に立ちます。例として、これは私自身のコンポーネントのクラス宣言です。

public class CalendarCell extends ImageButton implements OnTouchListener

onDraw:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

これは私のxmlレイアウトのスニペットです:

<TableRow>
        <com.view.customcomponents.CalendarCell
            style="@style/NumericImageButton"
            android:id="@+id/calendar_row1_col1"

            android:background="@drawable/calendar_bg_selector" />

少し前にチュートリアルに従ってこれを行いましたが、どこにあるのか覚えていません。また、何かが足りないかもしれません。グーグル少しとあなたは有用なリソースを見つけるでしょう。

編集:これらは私が従ったチュートリアルだと思いますが、最終的にそれを機能させるためにいくつかの作業を行う必要がありました:

公式ドキュメント

AndDev.org

于 2010-09-15T09:21:21.230 に答える
0

私はそれを解決したと思います。main.xmlファイルのコードを使用しましたが、機能します。私がしなければならなかったのは、パラメーターとしてコンテキストとともにAttributesSetを受け入れる新しいクラスコンストラクターをオーバーライドし、findViewById(CustomViewName)を使用してアクティビティでそれを参照し、CustomViewで定義された関数を使用することでした。

于 2010-09-15T23:46:19.130 に答える
0

Android Developer Toolsがビューと対話できるようにするには、少なくとも、パラメーターとしてContextオブジェクトとAttributeSetオブジェクトを受け取るコンストラクターを提供する必要があります。このコンストラクターにより、layout editor to create and edit an instance of your view.

class PieChart extends View {
    public PieChart(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
}

そして詳細ここに答える

于 2015-05-25T08:23:41.640 に答える