假设我有类似的东西:
public class MyExcellentView extends View{
//etc. etc.
}
并在xml中我使用它:
<com.my.package.MyExcellentView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
myCustomAttribute="100"
/>
有没有办法在myCustomAttribute
内访问MyExcellentView
?
答案 0 :(得分:3)
是的,这就是你这样做的方式:
public MyExcellentView(Context context, AttributeSet attrs){
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable. MyCustomView);
int customAtt = a.getInteger(R.styleable. MyCustomView_yourCustomAttribute, defaultValue);
a.recycle();
}
但是你还必须在attrs.xml中声明资源中的属性:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyCustomView">
<attr name="yourCustomAttribute"/>
</declare-styleable>
</resources>
另外,为了使用它,你必须这样做:
<com.my.package.MyExcellentView
xmlns:customAtts="http://schemas.android.com/apk/res/com.my.package"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
customAtts:myCustomAttribute="100"/>
希望这有帮助。
问候!