2012-05-01 13 views
10

Ho un piccolo Android ImageButton su uno schermo che rappresenta un'icona. Il problema è che è difficile da toccare e attivare. Non voglio aumentare la dimensione dell'immagine stessa, ma mi piacerebbe espandere la regione cliccabile e ingrandirla, quindi se l'utente è abbastanza vicino all'immagine attiverà l'evento onClick. Come può essere fatto senza implementare gli eventi onTouch per l'area dello schermo circostante?Android ImageButton come avere un'area cliccabile più grande dell'immagine stessa?

risposta

16

È possibile avvolgere il proprio ImageButton in un altro ViewGroup e impostare il riempimento sullo ViewGroup. Quindi ascoltate i clic sullo ViewGroup. Ecco un esempio:

<FrameLayout 
    android:id="@+id/button_layout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="20dp" > 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/my_button" 
     android:duplicateParentState="true" 
     android:clickable="false" 
     android:focusable="false" /> 

</FrameLayout> 

Si potrebbe quindi ascolto per i clic sui R.id.button_layout, e la vostra ImageButton dovrebbe ricevere tutti gli stessi stati (premuto, cliccato, ecc), come il layout genitore.

+0

Ho provato ad aggiungere padding a sinistra di 20-50 dip ma questo non sembra funzionare. –

+0

L'idea è di impostare padding = "20dip" piuttosto che paddingRight, paddingLeft etc? –

+0

Questa sarebbe forse la tecnica più veloce se funzionasse, ma non ho ancora potuto verificarlo. –

0

Ho avuto una situazione simile ... Ho appena inserito l'icona utilizzando un layout relativo, quindi ho posizionato un pulsante più grande direttamente sopra di esso che utilizzava un disegno che è completamente trasparente nello stato normale e aggiunge colore traslucido per premuto/focalizzato/ecc.

+0

come si specifica il colore traslucido? –

+0

Ho disegnato le icone (lo stato normale è un quadrato vuoto senza colore o alfa, ovviamente) e ho fatto riferimento a tutto tramite un xml estraibile, impostando il pulsante estraibile su xml. non solo ho fatto questo per rendere il pulsante più grande dell'immagine, ma mi ha permesso di usare un'immagine di sistema statico per l'icona di un telefono per mantenere le cose uniformi su ogni dispositivo separato –

+0

vedere qui: http://developer.android.com /resources/tutorials/views/hello-formstuff.html –

0

Non sono sicuro di come sia configurato il nostro layout, ma una cosa che mi viene in mente è usare un layout relativo. Crea la tua icona con un grande sfondo trasparente. Dovrai armeggiare con il layout per farlo posizionare correttamente, ma l'area trasparente sarà anche cliccabile.

Problemi correlati