2010-05-09 12 views
15

Come posso impostare una larghezza fissa per un pulsante Android? Ogni volta che provo a impostare una larghezza fissa riempie il genitore corrente (il RelativeView). Ecco il mio XML:Imposta larghezza del pulsante in Android

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

Come si assegnerebbe una larghezza FISSA?
UPDATE
Dire che ho diversi pulsanti che voglio le stesse dimensioni l'uno dell'altro e 1/3 dell'intera vista (Ritratto), quindi voglio un pulsante con il doppio della larghezza. Quindi un pulsante con il doppio dell'altezza. Come potrei realizzare questo altro che manualmente ridimensionandoli?

risposta

12

Per fare ciò che si desidera, è possibile utilizzare un LinearLayout con un weightsum. Ad esempio, puoi mettere un peso di 9. Se metti il ​​peso di tre pulsanti all'interno di 1 ciascuno. Prenderanno 1/3 del posto, e puoi mettere 2 per un altro oggetto. Questo oggetto sarà due volte più grande dell'altro.

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

Edit: Vorrei aggiungere che per far funzionare correttamente, è necessario impostare la larghezza o l'altezza per 0px (a seconda se si tratta di un orizzontale o un layout verticale).

12

Invece di android:layout_width="wrap_content" è possibile utilizzare un pixelsize fisso, come per esempio android:layout_width="20px" o un modo migliore: android:layout_width="20dp"

è anche possibile impostare la larghezza programatically nel codice: Button.setWidth(int width)

Per quanto riguarda l'aggiornamento:

Non so se sia una buona soluzione, ma io lavoro. Si potrebbe utilizzare

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

a leggere la risoluzione dello schermo e quindi impostare le dimensioni dei pulsanti in base alle metrics.widthPixel e metrics.heightPixel

+0

cosa è pd in 20pd .. come mostrato in es. Invece di android: layout_width = "wrap_content" puoi usare un pixel fisso come ad esempio android: layout_width = "20px" o un modo migliore: android: layout_width = "20pd" –

+1

credo che avrebbe dovuto essere 'pixel di densità'' dp 'http: // StackOverflow.it/questions/2025282/difference-of-px-dp-dip-and-sp-in-android –

+0

dp è un pixel indipendente dalla densità. L'idea è che se usi questo Android lo scalerà in su o in giù a seconda delle dimensioni dello schermo. Puoi vedere le pagine degli sviluppatori per maggiori informazioni: http://developer.android.com/guide/practices/screens_support.html – Jonny

6

Utilizzare minWidth e minHeight per impostare la larghezza e l'altezza di un pulsante.

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

Il modo migliore e più semplice per impostare un pulsante è dinamicamente

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()); 

L'altezza e la larghezza in pixel px. 45 è l'altezza in dp e 42 è la larghezza in dp.

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

Così, per esempio, se hai inserito il pulsante all'interno di un TableRow all'interno di un TableLayout, si dovrebbe avere come TableRow.LayoutParams

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

aggiungere android:minwidth linea in quel codice.

+1

Puoi provare ad elaborare un po 'di più e chiarire dove questo deve essere aggiunto? – Polygnome

+0

il pulsante di cui vuoi estendere le dimensioni, aggiungi questa riga e menziona "20dp" come questo –

Problemi correlati