Android中的style,attr,theme

來源:互聯網
上載者:User

總結下,免得每次忘

1)style類似於css,用來定義View等UI元素的屬性,比如layout_width等,可以在layout的xml中用@style/name來引用

2)style中如果要加入自訂屬性,可以在attr中定義,一個attr包括name和format屬性,可以在style中用@attr/name來引用

      也可以在attr中定義屬性集合,用declare-styleable標籤定義,這個屬性集合在view的建構函式中用到

      public View(Context context, AttributeSet attrs, int defStyle);

     View就可以在建構函式中知道要去defStyle中的哪些屬性出來

     屬性集的引用不同於單個屬性,使用R.styleable.name來引用

3)theme一般是針對activity的,全域生效,一般在theme中指定style,而這個指定,一般由一個屬性來完成,屬性在attr中定義

比如attr中定義autoCompletTextViewStyle屬性,然後在theme中指定

<item name="autoCompleteTextViewStyle">@android:style/Widget.AutoCompleteTextView</item> 

這樣就可以在View的建構函式中,利用R.attr.autoCompleteTextViewStyle取得Theme中指定的style

在 public View(Context context, AttributeSet attrs, int defStyle);

中,defStyle既可以是某一個style:R.style.name,也可以是R.attr.name,對於後者,需要在theme中指定屬性值。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.