bu özel görünüm MyView
olması halinde alışın Bazı özel niteliklerini tanımlayançekilebilir başvuru için kaynak kimliği tarz nitelik
<com.example.test.MyView
android:id="@+id/view1"
android:text="@string/app_name"
. . .
app:backgroundBase="@drawable/logo1"
app:normalColor="@color/blue"/>
İlk başta
TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyView, defStyle, 0);
int base = a.getInteger(R.styleable.MyView_backgroundBase, R.drawable.blank);
numaralı özel özniteliği alabileceğimi düşündüm
Yalnızca, özellik atandığında ve varsayılan R.drawable.blank
döndüğünde çalışır. app:backgroundBase
bir istisna atılır atandığında, özel özellik biçimi tamsayı olarak ilan etmesi olsa bile, gerçekten Drawable
başvuran ve aşağıdaki gibi alınması gerekir çünkü
"türü tamsayı dönüştürmek = 0xn Can not":
Drawable base = a.getDrawable(R.styleable.MyView_backgroundBase);
if(base == null) base = BitMapFactory.decodeResource(getResources(), R.drawable.blank);
Ve bu çalışır.
Şimdi benim sorum:
Gerçekten TypedArray dan Drawable
almak istemiyorum, ben (o R.drawable.logo1
olurdu yukarıdaki örnekte) tamsayı kimliği app:backgroundBase
tekabül istiyorum. Onu nasıl alabilirim?
bana yardımcı olurdu bazı açıklama: 'R.drawable.blank' istenen Biri yoksa durumunda varsayılan kaynaktır – HaydenKai