Datenbindung mit Themenattributen
Ich probiere das neue Android ausDatenbindungsbibliothek und ich wollten die Hintergrundfarbe von ToolBar mithilfe einer Bindung festlegen. Standardmäßig sollte die Farbe colorPrimary (aus dem Theme) sein.
Bevor ich DataBinding verwendet habe, sah meine ToolBar aus wie
<android.support.v7.widget.Toolbar
android:id="@+id/mainToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
/>
Nach dem Hinzufügen einer Bindung wollte ich den Hintergrund auf colorPrimary setzen, wenn keine Farbe gebunden ist - ich verwende dafür einen ternären Operator (wie im Handbuch erwähnt) -, aber dies führt zu einem Fehler, da die Themenattribute auch ein "? " Betreiber vor ihren Namen. Der Compiler glaubt, ich beginne eine neue ternäre Operation.
<data>
<variable name="toolBarBackgroundColor" type="int"/>
</data>
...
<android.support.v7.widget.Toolbar
android:id="@+id/mainToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@{toolBarBackgroundColor!=0? toolBarBackgroundColor: ?attr/colorPrimary }"
/>
Gibt es eine Möglichkeit, innerhalb einer Bindungsoperation auf Themenattribute zuzugreifen? Vielen Dank
Bearbeite
Ich weiß, dass ich das colorPrimary-Attribut programmgesteuert abrufen und über Java-Code binden kann. Aber ich frage mich nur, ob es eine XML-basierte Lösung dafür gibt oder nicht.