2016-07-15 22 views
1

Ich muss AttributSet als Parameter im benutzerdefinierten View-Konstruktor übergeben. Hier ist das Attribut, das ich brauche, um zu passieren:Pass AttributSet als Parameter im benutzerdefinierten Ansichtskonstruktor in AppWidget für Android

<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="DonutChart"> <attr name="radiusDonut" format="dimension"/> <attr name="donutTextSize" format="dimension"/> </declare-styleable> </resources>

Ich brauche dies mit Code zu tun, damit ich meine benutzerdefinierte Ansicht hinzufügen in meinem AppWidget zu Remoteview. Hat jemand eine Idee, wie kann ich das erreichen?

Antwort

0

Sie können XmlPullParser verwenden, um die Attribute aus Ihrer XML-Ressource abzurufen und diese dann wie folgt zu übergeben, wobei res_id durch die ID der obigen Datei ersetzt wird.

XmlResourceParser resourceParser = activity.getResources().getXml(R.xml.res_id); 
AttributeSet attrs = Xml.asAttributeSet(resourceParser); 

CustomView view = new CustomView(activity, attrs); 
+0

Ich erstellte attrs.xml Datei mit Tag deklarieren-styleable, aber getXml Funktion funktioniert nicht mit styleable. – vikifor

+0

Also, die einzige Lösung, die ich gefunden habe, die wahrscheinlich nicht gut ist, ist Attribute im Code zu setzen und die Ansicht mit Null-Parameter im Konstruktor zu erstellen. Wenn ich AttributSet nicht im Konstruktor übergebe, habe ich einen Fehler bekommen: Problem beim Laden des Widgets – vikifor

+0

Entschuldigung, ich wusste nicht, dass es nicht mit declare-styleable funktionieren würde. Ist das Decalre-Styleable wirklich notwendig? Wenn Sie * es * mit Code machen müssen, ist es in Ordnung, die Attribute über den Code so zu setzen, wie Sie es gesagt haben. Versuchen Sie, den Kontext/die Aktivität nur an den Konstruktor zu übergeben, d. H. Haben Sie kein zweites Argument. CustomView-Ansicht = neue CustomView (Aktivität). –