SORU
9 AĞUSTOS 2010, PAZARTESİ


Tanımlama özel attrs

Com gibi kendi öznitelikleri uygulamak gerekiyor.android.R.güzel bir sorudur

Resmi belgelerde bir şey buldum bu attrs nasıl tanımlanacağı ve Şifremi onları nasıl kullanılacağı hakkında bilgi istiyorum.

Teşekkürler

CEVAP
9 AĞUSTOS 2010, PAZARTESİ


Şu anda en iyi belgelerine kaynağıdır. 30 ** bir göz atabilirsiniz.

<declare-styleable> bir elemanı ** 5 üst öğesi veya içinde niteliklerini tanımlayabilirsiniz. Eğer birden fazla yerde bir çeki kullanacağım eğer kök öğesi koydum. Not, tüm özellikleri aynı genel ad paylaşmak. Eğer <declare-styleable> bir öğe içinde yeni bir öznitelik oluşturmak bile dışında kullanılabilir ve farklı türde aynı isimde bir öznitelik oluşturamazsınız.

<attr> bir öğe iki xml öznitelikleri name format vardır. name deniyor ve bu yönlendirme kodu, örneğin, R.attr.my_attribute nasıl son bulduğu sağlar. format öznitelik farklı değerler 'türü' özniteliği istiyorsun. göre olabilir

  • başvuru - eğer başvurduğu bir kaynak kimliği (e., "@/my_color", "@düzeni/my_layout") . renkli g
  • renk
  • boolean
  • boyut
  • yüzer
  • tamsayı
  • string
  • kesir
  • numaralama - normalde örtülü olarak tanımlanmış
  • bayrak - normalde örtülü olarak tanımlanmış

14* örneğin*, format="reference|color" kullanarak birden çok türde biçimini ayarlayabilirsiniz.

enum öznitelikleri aşağıdaki gibi tanımlanabilir

<attr name="my_enum_attr">
  <enum name="value1" value="1" />
  <enum name="value2" value="2" />
</attr>

flag öznitelikleri değerleri bit ored birlikte olabilir belirlenmelidir hariç: benzer

<attr name="my_flag_attr">
  <flag name="fuzzy" value="0x01" />
  <flag name="cold" value="0x02" />
</attr>

Öznitelikleri ek olarak <declare-styleable> eleman. Bu özel bir görünüm kullanabilirsiniz öznitelikleri tanımlamak için izin verir. Eğer format belirtmek önceden tanımlanmış olsaydı <attr> bir öğe belirterek bunu. Eğer ot, örneğin, bir android android:gravity yeniden kullanmak istiyorsanız, aşağıdaki gibi name bunu yapabilirsin.

Özel bir örnek görünüm <declare-styleable>:

<declare-styleable name="MyCustomView">
  <attr name="my_custom_attribute" />
  <attr name="android:gravity" />
</declare-styleable>

Özel tanımlama özel görünümü XML öznitelikleri birkaç şey yapmamız gerekiyor. İlk öznitelikleri bulmak için bir ad bildirmeniz gerekir. Kök düzeni öğesi bunu. Normalde xmlns:android="http://schemas.android.com/apk/res/android" tanedir. Şimdi de xmlns:whatever="http://schemas.android.com/apk/res-auto" eklemelisiniz.

Örnek:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:whatever="http://schemas.android.com/apk/res-auto"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

    <org.example.mypackage.MyCustomView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:gravity="center"
      whatever:my_custom_attribute="Hello, world!" />
</LinearLayout>

Son olarak, özel erişim için normalde yani aşağıdaki gibi özel görünümü kurucu yapmak bağlıyor.

public MyCustomView(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);

  TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView, defStyle, 0);

  String str = a.getString(R.styleable.MyCustomView_my_custom_attribute);

  //do something with str

  a.recycle();
}

Sonunda. :)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • Krumme1996

    Krumme1996

    21 EYLÜL 2009
  • Thehalopianoplayer

    Thehalopiano

    4 ŞUBAT 2011