2017-11-19 2 views
0
public void changeposition (int button){ 
    int whichPos = rand.nextInt(3) + 1; 
    if(button == 1){ 
     switch(whichPos) { 
      case 1: dirup.setPadding(0, 0, 284, 128); 
      case 2: dirup.setPadding(0, 0, 156, 88); 
      case 3: dirup.setPadding(0, 0, 24, 128); 
     } 
    } 
} 

Ich verwende Relative Layout und ich habe 2 Schaltflächen, die auf 3 verschiedene Standorte mit zufälligen Zufall verschieben können. Wie kann ich es in Java-Code tun, der Code oben tut fast nichts, es macht nur den Text in meiner Schaltfläche verschwinden, aber lassen Sie es an der gleichen Stelle.Verschieben der Schaltfläche in der Anwendung dynamisch

<Button 
    android:id="@+id/buttonDirection" 
    android:layout_width="70dp" 
    android:layout_height="70dp" 
    android:layout_alignBaseline="@+id/button4" 
    android:layout_alignBottom="@+id/button4" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginBottom="88dp" 
    android:layout_marginEnd="156dp" 
    android:background="@drawable/circlered" 
    android:rotation="90" 
    android:text="@string/direction" 
    android:textAlignment="center" 
    android:textSize="50sp" 
    android:visibility="gone" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintEnd_toEndOf="parent" 
    android:layout_marginRight="156dp" /> 

So wird die Schaltfläche jetzt in XML definiert.

Antwort

1

Wenn Sie die Auffüllung größer als die Größe des Widgets festlegen (in Ihrem Fall 70dp * 70dp), hat die Schaltfläche nicht genügend Platz für den Text.

In Ihrem XML geben Sie einen Rand an, der die Ansichtsgrenzen nicht ändert und abhängig von der Außenansicht ist.

, um den Rand einer Ansicht zu aktualisieren, die Sie zum Bearbeiten der LayoutParams benötigen.

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) dirup.getLayoutParams(); 
params.setMargins(left, top, right, bottom); 
dirup.setLayoutParams(params); 
+0

ich eine Fehlermeldung anzeigt, wenn dieser Ansatz mit 'java.lang.ClassCastException: android.support.constraint.ConstraintLayout $ LayoutParams kann nicht auf android.widget.RelativeLayout $ LayoutParams' – Tom

+0

gegossen werden, das bedeutet, dass Sie eine RelativeLayout nicht mit wie du erwähnt hast. die LayoutParams hängt von der übergeordneten Ansicht ab –

+0

Ähm, du hast recht, mein Fehler ConstraintLayout, sollte ich zu Relative wechseln oder kann ich es auch in diesem Layout tun? – Tom

Verwandte Themen