Come aggiungere l'icona nella vista Modifica testo in Android?


141

Voglio aggiungere un'icona di "ricerca" per apparire all'interno di un EditTextbordo sinistro? come la casella di ricerca nell'app di Facebook per Android?

Risposte:


433

Utilizzare la android:drawableLeftproprietà su EditText.

<EditText
    ...     
    android:drawableLeft="@drawable/my_icon" />

3
mi dispiace per la domanda poco chiara, voglio aggiungere un pulsante, quindi quando faccio clic su di esso, fa un po 'di azione
Adham

20
Questa era solo la soluzione che mi aspettavo, data l'intestazione di ricerca.
Thomas Ahle,

33
Inoltre, regola il riempimento usando la drawablePaddingproprietà.
Ryan R,

quindi quale dovrebbe essere la dimensione di quell'icona disegnabile e in quale cartella devo posizionarla?
Kalpesh Lakhani,

2
@KalpeshLakhani: di solito l'edittext e i drawable dovrebbero essere 32dp secondo le linee guida di progettazione Android: developer.android.com/design/style/metrics-grids.html
Lee Yi Hong

30

Puoi impostare drawableLeft nell'XML come suggerito da Marcos , ma potresti anche volerlo impostare a livello di codice, ad esempio in risposta a un evento. Per fare ciò usa il metodo setCompoundDrawablesWithIntrincisBounds (int, int, int, int) :

EditText editText = findViewById(R.id.myEditText);

// Set drawables for left, top, right, and bottom - send 0 for nothing
editTxt.setCompoundDrawablesWithIntrinsicBounds(R.drawable.myDrawable, 0, 0, 0);

Questo fa da sfondo a EditText, non all'icona / immagine sul "bordo sinistro" che è chiaramente menzionato nella domanda.
Paresh Mayani,

@Paresh - ecco perché ho eliminato la risposta. Ora ho modificato per includere una soluzione programmatica oltre alla soluzione XML originale.
Peter Ajtai,

1
come nascondere programmaticamente l'icona? quando si fa clic sulla casella di modifica?
Caccia il

1
@Caccia: basta impostare il disegno di assieme su nullquando si fa clic sulla vista.
Peter Ajtai,

27

Se si desidera utilizzare il disegno predefinito di Android, è possibile utilizzare in @android:drawable/ic_menu_searchquesto modo:

<EditText android:id="@+id/inputSearch"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:drawableLeft="@android:drawable/ic_menu_search"
    android:hint="Search product.."
    android:inputType="textVisiblePassword"/>


0

Utilizzare un layout relativo e impostare il pulsante in modo che sia allineato a sinistra della vista di modifica del testo, quindi impostare il riempimento sinistro della vista di testo sulla dimensione del pulsante. Non riesco a pensare a un buon modo per farlo senza codificare il riempimento: /

Puoi anche usare lo strumento apk per decomprimere l'apk di Facebook e dare un'occhiata ai suoi file di layout.


1
Vorrei menzionare che la decompilazione è contro la legge in molti paesi, ad esempio in tutta l'Unione europea, quindi per favore state attenti :)
Paweł Byszewski,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.