Come posso impedire a un EditText di ridimensionarsi automaticamente quando l'utente sta digitando?

StackOverflow https://stackoverflow.com/questions/1408781

Domanda

Ho un EditText e un Button posti uno accanto all'altro sulla stessa linea orizzontale. Sembra fantastico, tranne quando l'utente immette molto testo, il EditText viene ridimensionato e il Button viene schiacciato.

Ho entrambi EditText e Button impostati su layout_width = " wrap_content " . " fill_parent " incasina il layout e non voglio usare dimensioni assolute se non devo - il modo in cui ora sembra fantastico sia in orizzontale che in verticale, non faccio altro non vuoi che il EditText venga ridimensionato.

Il mio layout:

<TableLayout
    android:id="@+id/homelayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TableRow>
        <TextView
            android:id="@+id/labelartist"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Find artists:" />
    </TableRow>
    <TableRow>
        <EditText
            android:id="@+id/entryartist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:background="@android:drawable/editbox_background"
            android:editable="true"
            android:padding="5px"
            android:singleLine="true" />
        <Button
            android:id="@+id/okartist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginLeft="10dip"
            android:layout_weight="1"
            android:text="Search" />
    </TableRow>

</TableLayout>
È stato utile?

Soluzione

Per EditText usa

android:layout_width="0dp" - not required but preferred.
android:layout_weight="1"

E per Button non specificare android:layout_weight

Altri suggerimenti

Quello che faccio è in onCreate per l'attività, misurare prima il EditText quindi applicare la sua maxWidth.

Puoi farlo usando un codice simile al seguente:

EditText someedittext = (EditText)findViewById(R.id.sometextview);
someedittext.setMaxWidth(someedittext.getWidth());

Assegna a EditText un maxWidth . Ciò dovrebbe impedirne il ridimensionamento oltre la larghezza fornita. Inoltre, se vuoi che sia contenuto in 1 riga, imposta anche maxLines su 1

Usa solo:

android:layout_width="fill_parent"

sia per EditText che per Button. Funzionerà anche per EditText ma è meglio averlo su entrambi.

 inserisci qui la descrizione dell'immagine

Devi aggiungere android: imeOptions per prevenire questo comportamento.

Fai clic qui

puoi definire la dimensione del tuo edittext come mostrato sopra

android:minWidth="80dp"
android:maxWidth="80dp"

o

android:layout_width="60dp"

o

puoi applicare un'immagine di sfondo delle dimensioni che desideri ma non dimenticare di definirne l'altezza e la larghezza con wrap_content.

  android:layout_width="wrap_content"
  android:layout_height="wrap_content"

Ho avuto un problema simile, ma non sono riuscito a far funzionare quanto sopra. Quello che ho fatto, è prendere il testo dalla casella EditText e quindi formattarlo fino alla dimensione massima che il mio schermo potrebbe gestire. Quando lo salverò sul DB, lo salverò come testo di visualizzazione e testo originale.

Se vai a questa pagina ho inserito una spiegazione più lunga.

Il modo corretto di fare questo sarebbe impostare android: minWidth e android: maxWidth pari alla larghezza desiderata. In questo modo non dovrai modificare il layout per utilizzare Android: layout_weight.

Ad esempio, se vuoi che il tuo EditText sia sempre pixel a 80 densità, indipendentemente dal numero di caratteri digitati, utilizza quanto segue:

android:minWidth="80dp"
android:maxWidth="80dp"

Ho avuto la query esatta. Ma avevo un EditText e un pulsante uno accanto all'altro in un layout lineare. Ho provato android: layout_weight = " 1 " per EditText         android: layout_width = " 0DP " E ha funzionato perfettamente !! Molte grazie!

La soluzione scelta funziona, ma vorrei aggiungere un piccolo complemento:
se usi android: layout_weight = " 0.15 " (il valore non è importante)
poi
android: layout_width = " 0dp " se il LinearLayout è orizzontale
o
android: layout_height = " 0dp " se il LinearLayout è verticale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top