4

ImageView の定義に使用できるコンストラクターがいくつかあります。例えば

1) public ImageView (Context context)
2) public ImageView (Context context, AttributeSet attrs)
3) public ImageView (Context context, AttributeSet attrs, int defStyle)** 

2 番目と 3 番目のタイプのコンストラクターの使用について混乱しています。基本的に、 AttributeSetの代わりに何を渡せばよいかわかりません。 親切にコーディング例を提供してください。

4

2 に答える 2

3

これらのコンストラクターはViewドキュメントで定義されています。からのパラメータの説明は次のView(Context, AttributeSet, int)とおりです。

パラメーター

  • context    現在のテーマやリソースなどにアクセスできる、ビューが実行されているコンテキスト。
  • attrs        ビューを拡張している XML タグの属性。
  • defStyle    このビューに適用するデフォルトのスタイル。0 の場合、スタイルは適用されません (テーマに含まれるものを超えて)。これは、現在のテーマから値が取得される属性リソース、または明示的なスタイル リソースのいずれかです。

渡す属性がない場合は、の代わりに渡すことができることに注意してください。nullAttributeSet

のコーディングに関して、私が持ってAttributeSetいるカスタムTextViewクラスに使用するコードの一部を次に示します。

public EKTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    // ...
    if (attrs != null) {
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.LocalTextView);
        determineAttrs(context, a);
    }

    // ...
}
private void determineAttrs(Context c, TypedArray a) {
    String font = a.getString(R.styleable.fontName);
    if (font != null)
        mTypeface = Typeface.createFromAsset(c.getAssets(), "fonts/" + font);

    mCaps = a.getBoolean(R.styleable.allCaps, false);
}

ご覧のとおりTypedArray、属性からを取得したら、そのさまざまなメソッドを使用して各属性を収集できます。確認する必要があるその他のコードはView(Context, AttributeSet, int)またはのコードですResources.obtainStyledAttributes(AttributeSet, int[], int, int)

于 2013-02-03T18:22:08.683 に答える
1

コンテキスト付きのimageView、ImageViewの作成方法

ImageView image= new ImageView(context);

ここで、高さ、幅、重力などの値を設定する必要がある場合は、設定する必要があります

image.set****();

使用する必要がある属性の数に基づいて、 setXXX() メソッドを使用しません。

2. 属性セットを使用すると、res/values フォルダーの高さ、幅などの属性セットを別の xml ファイルで定義し、xml ファイルを getXml() に渡すことができます。

XmlPullParser parser = resources.getXml(yourxmlfilewithattribues);
 AttributeSet attributes = Xml.asAttributeSet(parser);
ImageView image=new ImageView(context,attributes);

ここで、 xml でカスタム属性を定義することもできます。AttributeSet クラスの例で提供されるメソッドを使用してアクセスできます。

getAttributeFloatValue(int index, float defaultValue)

// 'index' の属性の float 値を返します

于 2013-02-03T18:35:02.603 に答える