2010-05-09 5 views
15

Wie kann ich eine feste Breite für eine Android-Taste einstellen? Jedes Mal, wenn ich versuche, eine feste Breite festzulegen, füllt es das aktuelle Elternelement (RelativeView). Hier ist mein XML:Breite des Buttons in Android einstellen

<?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?
UPDATE
Angenommen, ich habe mehrere Tasten, die ich möchte die gleiche Größe und 1/3 der gesamten Ansicht (Portrait), dann möchte ich einen Knopf mit doppelter Breite. Dann ein Knopf mit doppelter Höhe. Wie kann ich das andere erreichen, indem ich sie manuell bemasse?

Antwort

12

Um das zu erreichen, was Sie wollen, können Sie ein Linearlayout mit einem weightsum verwenden. Zum Beispiel können Sie eine Gewichtssumme von 9 eingeben. Wenn Sie das Gewicht von drei Tasten innen auf 1 setzen. Sie nehmen 1/3 des Ortes, und Sie können 2 für ein anderes Objekt setzen. Dieses Objekt wird doppelt so groß sein wie das andere.

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

Edit: Ich würde dies für hinzufügen, um korrekt zu arbeiten, haben Sie die Breite oder Höhe auf 0px (je nachdem, ob es eine horizontal ist oder eine vertikale Gliederung).

12

Statt android:layout_width="wrap_content" können Sie eine feste Pixelgröße verwenden, wie zum Beispiel android:layout_width="20px" oder besser: android:layout_width="20dp"

Sie auch die Breite programmatisch im Code einstellen: Button.setWidth(int width)

Bezüglich Ihrer Update:

Ich weiß nicht, ob es eine gute Lösung ist, aber ich arbeite. Sie

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

nutzen, um die Bildschirmauflösung zu lesen und dann die Taste Größen nach metrics.widthPixel und metrics.heightPixel

+0

was ist pd in 20pd .. wie oben gezeigt zb. Anstelle von Android: layout_width = "wrap_content" können Sie eine feste Pixelgröße wie zum Beispiel Android: layout_width = "20px" oder einen besseren Weg: Android: layout_width = "20pd" –

+1

ich glaube, es hätte 'dichte pixel'' dp sein sollen 'http: // Stapelüberlauf.com/questions/2025282/Differenz-von-px-dp-dip-und-sp-in-android –

+0

dp ist Dichte unabhängige Pixel. Die Idee ist, dass wenn Sie Android verwenden, wird es je nach Bildschirmgröße nach oben oder unten skalieren. Sie können die Entwickler-Seiten für weitere Informationen sehen: http://developer.android.com/guide/practices/screens_support.html – Jonny

6

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> 
3

Der beste und einfachste Weg, um eine Schaltfläche dynamisch eingestellt 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)); 

So zum Beispiel, wenn Sie Ihre Schaltfläche innerhalb eines TableRow innerhalb eines Tablelayout platziert haben, sollten Sie es als TableRow.LayoutParams haben

index.setLayoutParams(new TableRow.LayoutParams(width, height)); 
0

android:minwidth Linie in diesem Code hinzufügen.

+1

Können Sie versuchen, ein bisschen mehr zu erarbeiten und zu klären, wo dies hinzugefügt werden muss? – Polygnome

+0

die Schaltfläche, die Sie die Größe erweitern möchten Sie diese Zeile hinzufügen und "20dp" wie folgt zu erwähnen –

Verwandte Themen