Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android中自定義控件的declare

Android中自定義控件的declare

編輯:Android開發實例

最近接觸了Android自定義控件,涉及到自定義xml中得屬性(attribute),其實也很簡單,但是寫著寫著,發現代碼不完美了,就是在attrs.xml這個文件中,發現屬性冗余,於是就想有沒有類似屬性繼承或者include之類的方法.本文將就declare-stylable中屬性重用記錄一下.

不完美的代碼

代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
 
    <declare-styleable name="ExTextView">
       <attr name="enableOnPad" format="boolean" />
     <attr name="supportDeviceType" format="reference"/>
    </declare-styleable>

    <declare-styleable name="ExEditText">
       <attr name="enableOnPad" format="boolean" />
     <attr name="supportDeviceType" format="reference"/> 
    </declare-styleable>
</resources>

如上面代碼,在ExTextView和ExEditText這個stylable中有著重復的屬性申明.雖然上面可以工作,但是總感覺寫的不專業,於是尋找優化方法.

這樣可以麼

嘗試著為declare-stylable指定一個parent,如下代碼

代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
 
    <declare-styleable name="ExTextView">
       <attr name="enableOnPad" format="boolean" />
     <attr name="supportDeviceType" format="reference"/>
    </declare-styleable>

    <declare-styleable name="ExEditText" parent="ExTextView">
         
    </declare-styleable>
</resources>

attrs.xml沒有報告語法錯誤.但是當我使用R.styleable.ExEditText_supportDeviceType時候,R文件卻沒有生成,重新清理了工程還是不生效,不知道是否為adt插件的問題.其他人也遇到了這樣的問題. 這個方法目前是不行的.

終極答案

實際上我們可以在declare-stylable之前,申明要多次使用的屬性,在declare-stylable節點內部,只需調用即可.具體代碼如下.

代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <attr name="enableOnPad" format="boolean" />
  <attr name="supportDeviceType" format="reference"/>
 
    <declare-styleable name="ExTextView">
        <attr name="enableOnPad"/>
        <attr name="supportDeviceType"/>
    </declare-styleable>

    <declare-styleable name="ExEditText">
        <attr name="enableOnPad"/>
      <attr name="supportDeviceType"/>
    </declare-styleable>
</resources>

每次引用attr後,建議清理一下工程,確保R文件重新生成.

延伸閱讀

http://stackoverflow.com/questions/18827875/how-to-declare-several-stylable-attributes-with-the-same-name-for-different-tags

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved