Wie wird die Höhe eines AppBarLayout programmgesteuert in der Android Support Library v24.0.0 festgelegt?

8

Beim Upgrade von der Android Support Library v23.4.0 auf v24.0.0 wurde die Höhe von 0 programmgesteuert auf ein AppBarLayout eingestellt:

%Vor%

Es funktioniert, wenn Sie die Höhe im XML-Format festlegen.

    
bryant1410 23.06.2016, 12:58
quelle

2 Antworten

10

Bearbeiten

Das AppBarLayout von v24.0.0 verwendet ein StateListAnimator , das die Höhe abhängig von seinem Status definiert. Die Verwendung von setElevation hat keine Auswirkung, wenn StateListAnimator verwendet wird (was standardmäßig der Fall ist). Setze elevation über XML oder programmgesteuert (beide für API & gt; = 21):

%Vor%

Alte Antwort

Dies scheint ein Problem der Design-Support-Bibliothek zu sein. Das Problem hängt damit zusammen, wie die Höhe programmgesteuert mithilfe von setElevation festgelegt wird. Wenn Sie es aus dem XML-Code setzen, wird StateListAnimator in die Ansicht eingefügt und nicht setElevation aufgerufen. % Co_de% sollte jedoch funktionieren.

Hier gibt es einen Workaround:

%Vor%

Dies ergibt sich aus dem, was der Konstruktor tut, indem er eine Methode in der Klasse setElevation in v24.0.0 aufruft.

    
bryant1410 23.06.2016, 12:58
quelle
3

Eine weitere mögliche Lösung hierfür ist das Hinzufügen von android:stateListAnimator="@null" zu Ihrem AppBarLayout , wie unten gezeigt.

%Vor%     
Volodymyr Khodonovych 02.12.2016 21:46
quelle