カスタム xml 属性を作成しようとしています。これは、複数のクラスで受け入れることができます。私は(とりわけ)この役立つ答えを見つけました:カスタム属性の定義
しかし、プログラムで属性にアクセスするにはどうすればよいですか? Eclipse は定義された名前を見つけられないようです:
ここに私のattrs.xmlがあります。それは私が使用しようとしている「ViewPadding」です:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="ViewPadding" format="integer"/>
<declare-styleable name="IntegerPicker">
<attr name="maxNrOfDigits" format="integer"/>
<attr name="NumberSize" format="integer"/>
<attr name="ViewColor" format="color"/>
<attr name="TextAlignRight" format="boolean"/>
</declare-styleable>
<declare-styleable name="DoublePicker">
<attr name="CompoundViewColor" format="color"/>
<attr name="CompoundViewPadding" format="integer"/>
</declare-styleable>
</resources>
これは、他の属性にアクセスするために使用するコードです。
public IntegerPicker(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.integer_picker, this, true);
etInteger = (EditText) findViewById(R.id.etInteger);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.IntegerPicker);
final int N = a.getIndexCount();
for (int i = 0; i < N; ++i)
{
int attr = a.getIndex(i);
switch (attr)
{
case R.styleable.IntegerPicker_ViewColor:
int ViewColor = a.getColor(attr, 0);
this.setBackgroundColor(ViewColor);
break;
case R.styleable.IntegerPicker_maxNrOfDigits:
int ems = a.getInteger(attr, 8);
etInteger.setEms(ems);
break;
case R.styleable.:
int padding = a.getInteger(attr, 10);
etInteger.setPadding(padding, padding, padding, padding);
break;
case R.styleable.IntegerPicker_NumberSize:
int NumberSize = a.getInteger(attr, 10);
etInteger.setTextSize(NumberSize);
break;
case R.styleable.IntegerPicker_TextAlignRight:
boolean textAlignRight = a.getBoolean(attr,false);
if(textAlignRight){
etInteger.setGravity(0x05);
}else{
etInteger.setGravity(0x03);
}
}
}
a.recycle();
}
対処方法:
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.integer_picker, this, true);
と
case R.styleable.IntegerPicker_ViewColor:
int ViewColor = a.getColor(attr, 0);
this.setBackgroundColor(ViewColor);
助けてください、私はここで本当に途方に暮れています:S