Android應用程序
如果不使用Android庫,那麼這裏就是你可以做什麼:
- 定義自定義設置樣式屬性(我想你已經這樣做了)。
- 請勿在樣式項目中使用您的命名空間前綴(命名空間默認爲當前應用程序的命名空間)。
實施例:
在attrs.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="testAttr" format="string"/>
</resources>
在styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TestStyle" >
<item name="testAttr">asdf</item>
</style>
</resources>
Android庫
如果自定義屬性來自Android庫,則仍然可以使用所描述的方法。理論上它應該工作,因爲Android庫的名稱空間與應用程序的名稱空間相同(在構建過程中從aapt
工具角度)。但我沒有自己測試過。
如果您指定命名空間,它將顯示錯誤。據我所知,樣式不支持xml命名空間。因此,這將失敗:
在styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:app="http://schemas.android.com/apk/res/app.package.name">
<style name="TestStyle" >
<item name="app:testAttr">asdf</item>
</style>
</resources>
分析器會自動默認爲當前應用程序的AndroidManifest
命名空間,雖然你不能明確指定該命名空間。
選擇的答案是錯的/不完整的。您可以在樣式文件中自定義UI元素,自己完成此操作...查看我的答案,例如 – Kurru