Мое пользовательское представление имеет динамический настраиваемый атрибут, например. атрибут backgroundimage, назначить через текущую неделю. Я не буду использовать конструктор CalendarView (контекст контекста, AttributeSet attrs) для передачи нескольких атрибутов, и я пытаюсь создать экземпляр атрибута с помощью Xml.asAttributeSet, но он не может работать. может кто-нибудь сказать мне, как это сделать.
Примечание. Мое пользовательское представление имеет динамический атрибут, поэтому я не хочу создавать экземпляр пользовательского представления через макет xml. Мое решение неверно?
вот пользовательский вид:
public class CalendarView extends View {
int backgroundImage;
public CalendarView(Context context, AttributeSet attrs) {
super(context, attrs);
backgroundImage = attrs.getAttributeResourceValue("http://www.mynamespace.com", "backgroundimage", 0);
}
}
вот активность:
public class TestActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(createTestView(0));
}
public CalendarView createTestView(int currentWeek) throws XmlPullParserException, IOException {
String attributes = "<attribute xmlns:android=\"http://schemas.android.com/apk/res/android\" " +
"xmlns:test=\"http://www.mynamespace.com\" " +
"android:layout_width=\"fill_parent\" android:layout_height=\"30\" " +
"test:backgroundimage=\"@drawable/"+ currentWeek +"_bg" + "\"/>";
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
parser.setInput(new StringReader(attributes));
parser.next();
AttributeSet attrs = Xml.asAttributeSet(parser);
return new CalendarView(this,attrs);
}
}