Evet. Kısa kılavuz:
1. Bir nitelik XML'si oluşturun
İçinde /res/values/attrs.xmlnitelik 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();
}
// ...
}
distanceExamplebu örnekte özel bir üye değişkendir. TypedArraydiğer değer türlerini ayrıştıracak çok şey var.
Ve bu kadar. ViewDeğ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 .