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

  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008
  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • Matt Stokes

    Matt Stokes

    22 Ocak 2008