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
È 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.
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.
come si specifica il colore traslucido? –
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 –
vedere qui: http://developer.android.com /resources/tutorials/views/hello-formstuff.html –
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.
- 1. Colore sfondo Android ImageButton
- 2. disabilitare un ImageButton?
- 3. Set Android ImageButton as Toggle
- 4. Android ImageButton setColorFilter non funziona
- 5. CSS/Flexbox: stessa larghezza dell'elemento più grande, come le colonne
- 6. Android ImageButton con UI disabilitato
- 7. come creare un imageButton circolare in Android?
- 8. TextView cliccabile in Android
- 9. Come avere una tela infinitamente grande?
- 10. android Imagebutton cambia immagine OnClick
- 11. Android: foto scattata è più grande l'anteprima
- 12. Avere più SQLiteOpenhelper in un'appli Android
- 13. come posso ridimensionare imageButton?
- 14. Android: come ridurre l'area cliccabile della visualizzazione?
- 15. Android ImageButton - impossibile acquisire l'immagine al centro
- 16. ASP.NET MVC - Posso avere più nomi per la stessa azione?
- 17. Rendere più grande l'area cliccabile dei collegamenti in linea senza influire sul layout
- 18. Aggiungi un overlay trasparente più grande per aumentare l'area cliccabile, senza modificare il layout
- 19. ImageButton che utilizza le transizioni in Android
- 20. Un servizio Android può avere più permessi?
- 21. come rendere cliccabile l'immagine
- 22. Come rendere più viste della stessa larghezza?
- 23. Come fare un Relatayoutout cliccabile?
- 24. Imagebutton immagine intera, angoli arrotondati
- 25. Android: come impostare l'altezza/larghezza dell'immagine src di un ImageButton?
- 26. come gestire più edizioni della stessa app per android
- 27. Quando utilizzare ImageButton anziché ImageView?
- 28. Come avere più istanze di servizio in Android
- 29. Android: icona cliccabile mobile su schermo?
- 30. Ricerca personalizzata Visualizza tutto cliccabile in Android
Ho provato ad aggiungere padding a sinistra di 20-50 dip ma questo non sembra funzionare. –
L'idea è di impostare padding = "20dip" piuttosto che paddingRight, paddingLeft etc? –
Questa sarebbe forse la tecnica più veloce se funzionasse, ma non ho ancora potuto verificarlo. –