2012-09-12 16 views
9

Ist es möglich, so etwas wieAndroid ziehbar mit Parametern

ziehbar/myshape.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <solid android:color="{0}" /> 
</shape> 

und dann von Java-Klasse nehmen diese ziehbar Weitergabe von Werten für Parameter zu haben. So etwas wie

Drawable myshape = ???.getDrawableWithParameters(R.drawable.myshape, 0x00ff00); 
+0

Duplicate von http://stackoverflow.com/questions/8396779/android-xml-drawable- zu ändern Parameter – Mene

Antwort

0

Wenn Sie ein shape so, wie Sie in dem gezeigten Beispiel haben schaffen, dann wird es als GradientDrawable zugänglich sein.

GradientDrawable d = (GradientDrawable) getResources().getDrawable(R.drawable.yourid); 

Wenn Sie einen Blick auf die Dokumentation (Link oben) nehmen Sie alle Funktionen sehen können, können Sie aus einem GradientDrawable Objekt zuzugreifen. Sie können die Hintergrund- und Rahmenfarbe und -breite später auch programmgesteuert mithilfe dieses Objekts festlegen.

Ich bin nicht 100% sicher, dass jedes Mal, wenn Sie eine Form in XML erstellen, erhalten Sie eine GradientDrawable. Ich musste einige Eigenschaften an einer Form selbst ändern und fand heraus, dass ClassCastExceptions beim Versuch, auf andere Typen von Drawable s

+1

Es geht nicht um die Form. Es könnte eine Ebenenliste sein. Die Parameter sind, wonach ich frage. Wenn es einen Weg gibt, könnten wir Parameter in Zeichenketten übergeben, wie wir es in Strings tun. – pbaris

+0

Wollen Sie Parameter wie Farben und Größen nur mit seiner ID und den Parametern, die Sie mögen, an eine Zeichnungsdatei übergeben? Nein, ich denke nicht, dass das möglich ist. Das würde gegen die Oop-Prinzipien verstoßen, die jeder Java-Entwickler befolgen sollte (meiner Meinung nach), und wäre völlig unnötig, weil all diese Drawable-Unterklassen eine wirklich freundliche Schnittstelle haben, um mit diesen Dingen umzugehen. –