Ich habe eine benutzerdefinierte Komponente CircleView
genannt, und ich möchte fillColor
definiert ein benutzerdefiniertes Attribut ändern genannt in attrs.xml
: in meinem Layout XMLWie programmgesteuert benutzerdefinierte Attribute von benutzerdefinierten Komponenten festlegen?
<declare-styleable name="CircleView">
<attr name="radius" format="integer" />
<attr name="fillColor" format="color" />
</declare-styleable>
Ich habe es anfänglich, die wie dieser (Namespace sieht derzeit circleview
ist definiert als xmlns:circleview="http://schemas.android.com/apk/res-auto"
, es funktioniert gut, wenn ich es in der XML definieren, so sollte dies kein Problem sein):
<com.mz496.toolkit.CircleView
...
circleview:fillColor="#33ffffff"/>
ich das fillColor
Attribut ganz gut in meinem CircleView
bekommen , die View
erweitert, aber ich weiß nicht, wie man seinen Wert einstellt.
Ich habe Dinge wie setBackgroundColor
suchte und suchte nach anderen „set“ Methoden, aber ich konnte keine finden. Ich stellte mir vor, ein Verfahren wie
circle.setAttribute(R.styleable.CircleView_fillColor, "#33ff0000")
Ja, es gibt nichts, in der Android-Tooling-Tool, die automatisch hinzugefügt Accessoren Attribute, zum Teil, weil dies möglicherweise nicht die richtige Antwort für alle Anwendungsfälle. Mir sind keine Bibliotheken von Drittanbietern bekannt, die dies anbieten, aber ich könnte mir vorstellen, dass jemand einen Annotationsprozessor rollt, der diese Art von Codegenerierung versucht. – CommonsWare
Recht, Android Studio versucht, leise von Autovervollständigen Methodennamen zu helfen (nach 'public void Set' eingeben, schlägt er' set ', aber ich denke, dass ist alles, was jetzt passiert. –
mz496