web-dev-qa-db-de.com

Stellen Sie die Breite des Buttons in Android ein

Wie kann ich eine feste Breite für eine Android-Schaltfläche festlegen? Jedes Mal, wenn ich versuche, eine feste Breite festzulegen, wird das aktuelle übergeordnete Element (RelativeView) gefüllt. Hier ist mein XML:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout Android:id="@+id/relativelayout" Android:layout_width="fill_parent" Android:layout_height="fill_parent" xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <EditText Android:layout_height="wrap_content" Android:editable="false" Android:layout_width="fill_parent" Android:id="@+id/output"></EditText>

    <Button Android:layout_height="wrap_content" Android:id="@+id/Button01" Android:layout_below="@id/output" Android:text="7" Android:layout_width="wrap_content"></Button>
    <Button Android:layout_below="@id/output" Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:id="@+id/Button02" Android:layout_toRightOf="@+id/Button01" Android:text="8"></Button>
    <Button Android:layout_below="@id/output" Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:id="@+id/Button03" Android:layout_toRightOf="@+id/Button02" Android:text="9"></Button>
</RelativeLayout>

Wie würde ich es eine feste Breite geben?
AKTUALISIEREN
Angenommen, ich habe mehrere Knöpfe, die ich gleich groß und 1/3 der gesamten Ansicht (Hochformat) haben soll, dann möchte ich einen Knopf mit doppelter Breite. Dann eine Taste mit doppelter Höhe. Wie könnte ich dieses andere erreichen, indem man sie manuell dimensioniert?

15
Mohit Deshpande

Um das zu erreichen, was Sie möchten, können Sie ein LinearLayout mit einer Gewichtungssumme verwenden. Zum Beispiel können Sie eine WeightSum von 9 eingeben. Wenn Sie das Gewicht von drei Schaltflächen innen auf jeweils 1 setzen. Sie nehmen 1/3 des Platzes ein, und Sie können 2 für ein anderes Objekt eingeben. Dieses Objekt ist doppelt so groß wie das andere.

http://developer.Android.com/reference/Android/widget/LinearLayout.html#setWeightSum(float)

Edit: Ich möchte hinzufügen, dass dies korrekt funktioniert, indem Sie die Breite oder Höhe auf 0px setzen (abhängig davon, ob es sich um ein horizontales oder ein vertikales Layout handelt).

12

Anstelle von Android:layout_width="wrap_content" können Sie eine feste Pixelgröße wie beispielsweise Android:layout_width="20px" oder eine bessere Methode verwenden: Android:layout_width="20dp"

sie können die Breite auch programmgesteuert im Code einstellen: Button.setWidth(int width)

Zu Ihrem Update:

Ich weiß nicht, ob es eine gute Lösung ist, aber ich arbeite. Du könntest benutzen

 DisplayMetrics metrics = new DisplayMetrics();
 getWindowManager().getDefaultDisplay().getMetrics(metrics);

um die Bildschirmauflösung zu lesen, und stellen Sie die Tastengrößen entsprechend metrics.widthPixel und metrics.heightPixel ein

12

Verwenden Sie minWidth und minHeight, um die Breite und Höhe einer Schaltfläche festzulegen.

<Button Android:layout_height="wrap_content"
 Android:id="@+id/Button01" 
 Android:layout_below="@id/output" 
 Android:text="7" 
 Android:minWidth="100dp">
</Button>
6

Der beste und einfachste Weg, eine Schaltfläche dynamisch zu setzen, ist 

 Button index=new Button(this);
 int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 45, getResources().getDisplayMetrics());             
 int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 42, getResources().getDisplayMetrics());

Die Höhe und Breite in Pixel px . 45 ist die Höhe in dp und 42 ist die Breite in dp .

 index.setLayoutParams(new <Parent>.LayoutParams(width, height));

Wenn Sie beispielsweise eine Schaltfläche innerhalb einer TableRow innerhalb eines TableLayout platziert haben, sollten Sie sie als TableRow.LayoutParams haben

 index.setLayoutParams(new TableRow.LayoutParams(width, height));
3
Ali Kahoot

füge Android:minwidth Zeile in diesem Code hinzu. 

0
Rathiga Jesika