我不確定我是否遇到Android工具中的錯誤,或者這是否是有意設計的。問題是這樣的:我有一個Android庫項目,導出一個小部件。作爲該插件的一部分,設置樣式屬性導出在R.styleable:導出不同包名下的Android庫項目資源?
庫項目(包= com.example.mylib):
<declare-styleable name="com.example.MyWidget">
<attr name="someAttr" format="integer" />
</declare-styleable>
應用項目(包= com.example.myapp):
<LinearLayout xmnls:mylib="http://schemas.android.com/apk/res/com.example.mylib">
<com.example.MyWidget android:id="..." mylib:someAttr="1" />
</LinearLayout>
的問題是,在someAttr
屬性似乎是唯一可見到Android/ADT每當庫和應用程序使用相同的包標識!在這種情況下,他們不這樣做,和ADT失敗,出現以下錯誤:
No resource identifier found for attribute 'someAttr' in package 'com.example.mylib'
就像我說的,我可以通過改變應用程序的包名「com.example.mylib」解決這個問題,但當然這不是我想要的!我錯過了什麼嗎?
噢,我的,好吧,現在我想讓我的生命回到那兩個小時,我浪費了試圖圍繞這一點。謝謝! – Matthias
其實我有一個問題:當我將lib項目中的attrs.xml複製到應用程序項目中時,那麼資源ID將在運行時不匹配,應用程序將崩潰。當我移動它時,lib項目將不再編譯。那麼我怎樣才能通過複製樣式化的聲明來解決這個問題? – Matthias
您需要將使用* custom xml attriubtes的所有內容移至應用程序,而不僅僅是自定義屬性聲明。換句話說,如果您有使用自定義屬性的自定義View X以及使用自定義視圖X的佈局L1,...,Ln,則需要將視圖X和所有Ls移至應用程序項目。 – inazaruk