Evet. Kısa kılavuz:
1. Bir nitelik XML'si oluşturun
İçinde /res/values/attrs.xml
nitelik ve türüne sahip yeni bir XML dosyası oluşturun
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<declare-styleable name="MyCustomElement">
<attr name="distanceExample" format="dimension"/>
</declare-styleable>
</resources>
Temel olarak <declare-styleable />
, görünümünüz için tüm özel özniteliklerinizi içeren bir tane ayarlamanız gerekir (burada sadece bir tane). Hiçbir zaman olası türlerin tam listesini bulamadım, bu yüzden sanırım bir tane için kaynağa bakmanız gerekiyor. Bildiğim türler referans (başka bir kaynağa), renk, boole, boyut, kayan nokta, tamsayı ve dizedir . Oldukça açıklayıcılar
2. Düzeninizdeki öznitelikleri kullanın
Bu, bir istisna dışında yukarıda yaptığınız şekilde çalışır. Özel niteliğinizin kendi XML ad alanına ihtiyacı var.
<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"
/>
Oldukça yalındır.
3. Geçtiğiniz değerlerden yararlanın
Değerleri ayrıştırmak için özel görünümünüzün yapıcısını değiştirin.
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
bu örnekte özel bir üye değişkendir. TypedArray
diğer değer türlerini ayrıştıracak çok şey var.
Ve bu kadar. View
Değiştirmek için kendi çözümünüzdeki ayrıştırılmış değeri kullanın , örneğin onDraw()
görünümü buna göre değiştirmek için kullanın .