Так. Короткий посібник:
1. Створіть атрибут XML
Створіть новий XML-файл всередині /res/values/attrs.xml
, з атрибутом та його типом
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<declare-styleable name="MyCustomElement">
<attr name="distanceExample" format="dimension"/>
</declare-styleable>
</resources>
По суті, ви повинні встановити один <declare-styleable />
для перегляду, який містить усі власні атрибути (тут лише один). Я ніколи не знайшов повного списку можливих типів, тому вам потрібно подивитися джерело для одного, я думаю. Типи, які я знаю, - це посилання (на інший ресурс), колір, булевий, розмірний, плаваючий, цілий і рядковий . Вони досить зрозумілі
2. Використовуйте атрибути у своєму макеті
Це працює так само, як ви робили вище, за одним винятком. Ваш власний атрибут потребує власного простору імен XML.
<com.example.yourpackage.MyCustomElement
xmlns:customNS="http://schemas.android.com/apk/res/com.example.yourpackage"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Element..."
customNS:distanceExample="12dp"
/>
Досить прямо вперед.
3. Скористайтеся отриманими вами значеннями
Змініть конструктор власного представлення для аналізу значень.
public MyCustomElement(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyCustomElement, 0, 0);
try {
distanceExample = ta.getDimension(R.styleable.MyCustomElement_distanceExample, 100.0f);
} finally {
ta.recycle();
}
// ...
}
distanceExample
є приватною змінною в цьому прикладі. TypedArray
має багато інших речей для розбору інших типів значень.
І це все. Використовуйте проаналізовані значення у вашому, View
щоб змінити його, наприклад, використовувати його, onDraw()
щоб змінити вигляд відповідно.