SORU
16 Mayıs 2011, PAZARTESİ


İlan Android öznitelikleri styleable

Hangi bileşenleri için özel stiller ilan edebiliriz declare-styleable etiketi ile ilgili değerli belgeler var. attr etiket format öznitelik için geçerli değerler this list buldum. Bu güzel gittiği yere kadar da, bazı değerler nasıl kullanıldığını açıklamıyor. attr.xml (standart öznitelikleri için Android kaynak tarama), gibi şeyler yapabilirsin, bunu keşfettim

<!-- The most prominent text color.  -->
<attr name="textColorPrimary" format="reference|color" />

format öznitelik açıkça değerlerin bir kombinasyonu ayarlanabilir. Muhtemelen format öznitelik çözümleyici gerçek tarzı bir değeri yorumlamak yardımcı olur. Sonra attr.xml bu keşfettim

<!-- Default text typeface. -->
<attr name="typeface">
    <enum name="normal" value="0" />
    <enum name="sans" value="1" />
    <enum name="serif" value="2" />
    <enum name="monospace" value="3" />
</attr>

<!-- Default text typeface style. -->
<attr name="textStyle">
    <flag name="normal" value="0" />
    <flag name="bold" value="1" />
    <flag name="italic" value="2" />
</attr>

Bunların her ikisi de belirtti stil için izin verilen değerler beyan görünüyor.

İki sorum var:

  1. enum değerler flag değerler sağlayan bir sağlayan bir style özniteliği arasındaki fark nedir?
  2. Herkes declare-styleable nasıl çalıştığını, daha iyi bir Dokümantasyon (ters Android kaynak kodunu Mühendisliği dışında) biliyor mu?

CEVAP
16 Mayıs 2011, PAZARTESİ


Bu soru var: Defining custom attrs ilebazıbilgi, ama çok değil.

Ve bu 23**. Bayraklar ve çeteleler hakkında iyi bilgilerim:

Özel XML Flags Özniteliği

Bayraklar özel öznitelik türleri vardır sadece bir çok iznine sahip oldukları değerler, yani o küçük alt bunun altında tanımlanır etiketi özniteliği. Belirtilen bayraklar ile bir “” özniteliğini ve “değer”adı öznitelik. Adları için gereklidir bu öznitelik türü içinde benzersiz ama değerleri olması gerekmez. Bu nedeni evrim sürecinde vardı Android “fill_parent” ve “” hem match_parent aynı davranış için haritalama. Onların değerleri aynıydı.

Adı, haritalar özniteliği değeri kullanılan içinde yer düzen XML ve gerektirmez ad alanı öneki. Bu nedenle, için “” “” merkezi olarak seçtim yukarıda tilingMode öznitelik değeri. Olabilir kolayca seçilen “” ya da gerilmiş “tekrar” ama başka bir şey yok. Değil hatta gerçek değerleri içinde bırakılabilir. ki izin verilmiş.

Değeri bir öznitelik olmalıdır tamsayı. Onaltılık seçimi ya standart rakamıyla temsil edilir senin için. Birkaç yer içinde var her ikisi de kullanıldığı Android kodu ve Android derleyici için mutlu. ya kabul edin.

Özel XML Çeteleler bağlıyor

Çeteleler bir yer hemen hemen aynı kullanılır bir hüküm ile bayrak olarak şekilde, birbirlerinin yerine kullanılabilir tamsayılar. Kaputun altında Çeteleler ve Tamsayılar aynı veri eşleştirilir yani, bir Tamsayı yazın. Ne zaman öznitelik tanımı görünen Tamsayılar, Çeteleler önlemek için hizmet vermektedir “sihirli sayı” olan her zaman kötüdür. Bu bir neden olabilir. “: layout_width” ya bir android boyut, tamsayı veya dize adlı “fill_parent.”

Bağlam içine koymak için, hadi bir özel oluşturmak varsayalım öznitelik adı “layout_scroll_height” kabul eden bir tamsayı ya da bir dize “scroll_to_top.” Bir ben eklemek istiyorum bunu yapmak için “tamsayı” biçim, nitelik ve izleyin numaralama ile:

<attr name="layout_scroll_height" format="integer">  
    <enum name="scroll_to_top" value="-1"/> 
</attr>

Çeteleler kullanırken bir şartım bu şekilde bir geliştirici olduğunu özel Görünümü kullanarak olabilir kasıtlı değeri "" -1 yeri düzeni parametreleri. Bu olur mantık özel durum tetik “scroll_to_top.” (Ya da böyle beklenmedik beklenen) davranış hızlı olabilir kütüphane “eski için ligden kod Numaralandırma değerleri olsaydı” kazık kötü seçilmiş.


Gördüğüm kadarıyla, bir öznitelik gerçekte ekleyebilirsiniz gerçek değerleri elde edebilirsiniz ne ile sınırlıdır. AttributeSet sınıf başvuru daha fazla ipucu için here kontrol edin.

Elde edebilirsiniz:

  • Boolean değerleri (getAttributeBooleanValue),
  • yüzer (getAttributeFloatValue),
  • in (getAttributeIntValue),
  • in (getAttributeUnsignedIntValue)
  • ve dizeleri (getAttributeValue)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • уσ ρℓz sυв ιℓℓ sυв вαcқ

    уσ ρℓz

    14 EKİM 2010
  • Tire Rack

    Tire Rack

    31 Mayıs 2007
  • whiteboy7thst

    whiteboy7ths

    1 Temmuz 2009