Sto cercando di avere un'immagine (come sfondo) su un pulsante e aggiungere dinamicamente, a seconda di ciò che succede durante il run-time, del testo sopra/sopra l'immagine.
Se uso ImageButton
non ho nemmeno la possibilità di aggiungere del testo.
Se uso Button
posso aggiungere del testo ma solo definire un'immagine con android:drawableBottom
e attributi XML simili come definito qui.
Tuttavia questi attributi combinano solo testo e immagine nelle dimensioni x e y, il che significa che posso disegnare un'immagine intorno al mio testo, ma non sotto il mio testo (con l'asse z definito come uscente dal display).
Qualche suggerimento su come fare questo? Un'idea potrebbe essere quella di estendere Button
o ImageButton
e sovrascrivere il metodo draw()
. Ma con il mio attuale livello di conoscenza non so davvero come farlo (rendering 2D). Forse qualcuno con più esperienza conosce una soluzione o almeno qualche indicazione per iniziare?
Per gli utenti che vogliono solo mettere sfondo, immagine-icona e testo in un Button
da file diversi: Imposta su un Button
lo sfondo, gli attributi drawableTop/Bottom/Rigth/Left e padding.
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/home_btn_test"
android:drawableTop="@drawable/home_icon_test"
android:textColor="#FFFFFF"
android:id="@+id/ButtonTest"
android:paddingTop="32sp"
android:drawablePadding="-15sp"
android:text="this is text"></Button>
Per una disposizione più sofisticata puoi anche usare RelativeLayout
e renderlo cliccabile.
Tutorial: Grande tutorial che copre entrambi i casi: http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx
C'è una soluzione molto migliore per questo problema.
Basta prendere un normale Button
e usare gli attributi drawableLeft
e gravity
.
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/my_btn_icon"
android:gravity="left|center_vertical" />
In questo modo si ottiene un pulsante che visualizza un'icona nella parte sinistra del pulsante e il testo nella parte destra dell'icona centrato verticalmente.
Puoi chiamare setBackground()
su un Button
per impostare lo sfondo del pulsante.
Qualsiasi testo apparirà sopra lo sfondo.
Se state cercando qualcosa di simile in xml c'è:
android:background
attributo che funziona allo stesso modo.