2016-07-13 7 views
1

Ich habe ein Layout über den unteren Rand meines Bildschirms mit 4 Tasten und einem Space in der Mitte. Der Platz ist da, über dem ein FAB angezeigt werden kann, aber wenn das Layout ausgeblendet ist, möchte ich den Platz in der Mitte auf 0dp verkleinern, so dass die 4 Schaltflächen gleichmäßig über den Bildschirm verlaufen.Wie programmiere ich eine Schaltfläche programmierbar und ordne den Rest des Layouts entsprechend um?

Ich habe versucht, einen ViewPropertyAnimator verwenden, um die Breite auf 0 zu skalieren, aber es funktioniert nicht.

Wie kann ich den Raum in der Mitte der 4 Tasten programmatisch (und idealerweise animiert) verkleinern und vergrößern, so dass die Größe der 4 Tasten entsprechend der Größe des Raums geändert wird?

Der Layout-Code Ich verwende ist:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:background="@drawable/background" 
    android:orientation="horizontal"> 

    <Button 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:background="@drawable/button_background" /> 

    <Button 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:background="@drawable/button_background" /> 

    <Space 
     android:id="@+id/space" 
     android:layout_width="100dp" 
     android:layout_height="match_parent" /> 

    <Button 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:background="@drawable/button_background" /> 

    <Button 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:background="@drawable/button_background" /> 
</LinearLayout> 

Antwort

1

Set es ist die Sichtbarkeit zu GONE

<Space 
    android:id="@+id/space" 
    android:layout_width="100dp" 
    android:layout_height="match_parent" 
    android:visibility="gone" /> 

und die einfacheren Animation Methode ist es, diese Linie zu dem Root-Tag des Layout-XML hinzufügen file:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:background="@drawable/background" 
    android:orientation="horizontal"  
    android:animateLayoutChanges="true"> 
+0

Ich hätte nie erwartet, dass die Lösung so elegant ist. Es funktioniert perfekt, danke! – Quorrin

+0

Gern geschehen! –