看看Mark Murphy在http://github.com/commonsguy/cw-advandroid/tree/master/Views/ColorMixer/上的出色例子,你可以看到他定義了一個名爲ColorMixer的自定義小部件。 ColorMixer具有在attrs.xml中聲明的名爲「initialColor」的屬性。Android:我如何定義自定義小部件的屬性?
在構造函數ColorMixer,他獲得的屬性值如下:
TypedArray a=getContext()
.obtainStyledAttributes(attrs, R.styleable.ColorMixer, 0, 0);
color = a.getInt(R.styleable.ColorMixer_initialColor, 0xFFA4C639);
a.recycle();
這只是正常,如果「R」是提供給ColorMixer。如果ColorMixer編寫並編譯了它將要包含的任何包,情況就是這樣。
但是如果我想讓ColorMixer更普遍有用呢?我想使用相同的源代碼,未經修改,甚至可能將其放入jar文件中。這意味着你不能引用'R'。
在我看來,我應該能夠做到像
TypedArray a=getContext()
.obtainStyledAttributes(attrs, what-do-I-do-here?, 0, 0);
int resid = context.getResources().getIdentifier("ColorMixer_initialColor",
"attr", "com.commonsware.android.colormixer.ColorMixer")
color = a.getInt(resid, 0xFFA4C639);
但從未則getIdentifier返回什麼,但零。還有什麼我應該做的?我想重新寫這些代碼是完全獨立的「R」
對於源代碼到一個具體的例子,請參見www.efalk.org/tmp/CustomWidget.tar.gz
謝謝,我會跟隨你的鏈接。碰巧,我今天早上加入了cw-android。 – 2010-05-11 19:56:24