TypedArrayとobtainStyledAttributesの使用
5777 ワード
次に、カスタムコントロールで使用方法を説明します.
1.まず変数を作成するにはvalues/attrsを作成します.xmlファイル、ファイル名は任意ですが、valuesディレクトリの下にあります.
ルートラベルresourcesの場合、定義された変数には名前が必要です.declare-styleable name=「MyButton」>で、buttonと定義されています.この名前には、複数のカスタムプロパティがあります.textSizeという名前のプロパティが定義されています.フォーマットはdimensionです.このformatはtextSizeプロパティのタイプを指定し、フォントサイズの定義にのみ使用できます.
2.次にカスタムButton:
ここで、TypedArrayの例は属性の容器である、context.obtainStyledAttributes()メソッドが返されます.AttributeSetはノードの属性集合です
3.カスタム属性でレイアウトファイルに値を割り当てるには、次の手順に従います.
ルートラベルには次の項目が追加されています.
buttonという名前空間を宣言しましたが、myappは任意の名前で、自分で勝手に名前をつけることができます.
固定されています
カスタムtextSizeの値が取得され、ない場合はデフォルトの値、15が使用されます.
最後に呼び出しを忘れないでください.
1.まず変数を作成するにはvalues/attrsを作成します.xmlファイル、ファイル名は任意ですが、valuesディレクトリの下にあります.
ルートラベルresourcesの場合、定義された変数には名前が必要です.declare-styleable name=「MyButton」>で、buttonと定義されています.この名前には、複数のカスタムプロパティがあります.textSizeという名前のプロパティが定義されています.フォーマットはdimensionです.このformatはtextSizeプロパティのタイプを指定し、フォントサイズの定義にのみ使用できます.
2.次にカスタムButton:
package com.example.a31210.mybottombarlayout.activity.index;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.Button;
import com.example.a31210.mybottombarlayout.R;
/**
* Created by YuShuangPing on 2018/4/13.
*/
public class MyButton extends Button {
public MyButton(Context context) {
super(context);
init(context,null);
}
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
init(context,attrs);
}
public MyButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context,attrs);
}
private void init(Context context, AttributeSet attrs) {
TypedArray typedArray=context.obtainStyledAttributes(attrs, R.styleable.MyButton);
this.setText(typedArray.getString(R.styleable.MyButton_text));
this.setTextSize(typedArray.getDimension(R.styleable.MyButton_textSize,15));
this.setTextColor(typedArray.getColor(R.styleable.MyButton_textColor,getResources().getColor(R.color.colorAccent)));
typedArray.recycle();
}
}
ここで、TypedArrayの例は属性の容器である、context.obtainStyledAttributes()メソッドが返されます.AttributeSetはノードの属性集合です
3.カスタム属性でレイアウトファイルに値を割り当てるには、次の手順に従います.
ルートラベルには次の項目が追加されています.
xmlns:button="http://schemas.android.com/apk/res-auto"
buttonという名前空間を宣言しましたが、myappは任意の名前で、自分で勝手に名前をつけることができます.
"http://schemas.android.com/apk/res-auto"
固定されています
typedArray.getDimension(R.styleable.MyButton_textSize,15);
カスタムtextSizeの値が取得され、ない場合はデフォルトの値、15が使用されます.
最後に呼び出しを忘れないでください.
typedArray.recycle();