Wie kann ich das anwenden mathematischer Operationen auf Android-Abmessungen?
Wie kann ich vermeiden, dass diese hardcoded Mathe...
<resources>
<dimen name="uno">10dip</dimen>
<dimen name="dos">6dip</dimen>
<dimen name="uno_plus_dos">16dip</dimen>
</resources>
<Button
android:layout_marginTop="@dimen/uno_plus_dos" />
...und verdeckte es so etwas?
<Button
android:layout_marginTop="@dimin/uno + @dimen/dos" />
- Ich wünschte wirklich, dass Android hatte, dass Funktionalität. Es könnte sein, eine Sache weniger zu pflegen
- 2016 und noch nicht da
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht, sorry. Layout-XML-Dateien nicht unterstützen, Ausdrücken. Sie entweder:
@dimen/uno_plus_dos
oderUPDATE Die data-binding-Bibliothek unterstützt einige Vorgänge in seinen äußerungen. Ich bin unsicher, ob es verarbeiten kann, diese spezifische Szenario.
Einen trick für die einfache Nachrüstung ist die Verwendung von margin + padding.
Mit databinding:
IFAIK Margen-Adapter sind nicht das sdk. Sie müssen definieren Sie selbst:
Stellen Sie sicher Datenbindung aktiviert ist, für Ihr Projekt :
in Ihrem bauen.gradle.
Den databinding doc zu Lesen lohnt.
Gibt es ein paar tricks, das zu umgehen, aber es wäre nicht so schön, wie die von Ihnen vorgeschlagene Lösung, das ist etwas, was ich auch wollen. Zum Beispiel, können Sie mit layout-Polster auf die nicht nur die Ansicht (mit der Schaltfläche in diesem Fall), aber Sie können es auch tun, auf die Ansicht übergeordnete (das layout wie LinearLayout/RelativeLayout). Sie können auch in invisibile Ansichten (gerade View-Objekt arbeitet oft) mit festen Abmessungen. Es wäre wie
Beachten Sie, dass 1px Ordnung ist, wenn Sie wollen, garantieren nur 1 pixel gezeichnet werden für eine dimension, die in der Regel, was Sie wollen, wenn Sie möchten, verwenden leerer Blick für die Polsterung. Einige sagen, FrameLayout ist besser für leer-Polsterung, aber das ist herabgestiegen aus Sicht
Manchmal kann man kombinieren Polsterung und das layout Polsterung, aber das kann chaotisch und haben Ihre Ansicht beschnitten. Auch Sie können schon so etwas wie ein FrameLayout oder ein LinearLayout enthält nur diese Ansicht, und verwenden Sie, um die zusätzliche Polsterung