我编写了一个其他模块可以依赖的库模块。 我创建了一个库模块并在其中编写了一些代码。 这是一个自定义视图。我像这样创建attr.xml。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="top_icon" format="reference" />
<attr name="bottom_icon" format="reference" />
<declare-styleable name="GradientIconView">
<attr name="top_icon" />
<attr name="bottom_icon" />
</declare-styleable>
<attr name="text" format="string" />
<attr name="text_size" format="dimension" />
<attr name="top_text_color" format="color" />
<attr name="bottom_text_color" format="color" />
<declare-styleable name="GradientTextView">
<attr name="text" />
<attr name="text_size" />
<attr name="top_text_color" />
<attr name="bottom_text_color" />
</declare-styleable>
</resources>
我写了这样的代码。
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.GradientIconView);
BitmapDrawable drawable;
int n = a.getIndexCount();
for (int i = 0; i < n; i++) {
int attr = a.getIndex(i);
switch (attr) {
case R.styleable.GradientIconView_top_icon:
drawable = (BitmapDrawable) a.getDrawable(attr);
setTopIconView(drawable);
break;
case R.styleable.GradientIconView_bottom_icon:
drawable = (BitmapDrawable) a.getDrawable(attr);
setBottomIconView(drawable);
break;
}
}
答案 0 :(得分:1)
我发现问题所在。这不是R.java没有生成的。它只是R.styleable。***不能在Android库模块的switch语句中使用。
从ADT 14开始,图书馆项目中的资源常量不再是最终的。 所以我改变了我的代码。它运作良好。
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.GradientIconView);
BitmapDrawable drawable;
int n = a.getIndexCount();
for (int i = 0; i < n; i++) {
int attr = a.getIndex(i);
if (attr == R.styleable.GradientIconView_top_icon) {
drawable = (BitmapDrawable) a.getDrawable(attr);
setTopIconView(drawable);
break;
}
else if(attr == R.styleable.GradientIconView_bottom_icon) {
drawable = (BitmapDrawable) a.getDrawable(attr);
setBottomIconView(drawable);
break;
}
}
a.recycle();
最后,我自己解决了这个问题:)
答案 1 :(得分:0)
试试这个: -Delete文件夹YourApp / build,YourApp / app / build和所有文件.iml -Restart android studio和clean-rebuild 希望它能帮到你