Snažím sa mať obrázok (ako pozadie) na tlačidle a dynamicky pridávať text nad/nad obrázok v závislosti od toho, čo sa deje počas behu.
Ak použijem ImageButton
, nemám ani možnosť pridať text.
Ak použijem Button
, môžem pridať text, ale iba definovať obrázok pomocou android:drawableBottom
a podobných atribútov XML, ako sú definované tu.
Tieto atribúty však kombinujú iba text & obrázok v rozmeroch x a y, čo znamená, že môžem nakresliť obrázok okolo môjho textu, ale nie pod/pod môj text (pričom os z je definovaná ako vychádzajúca zo zobrazenia).
Nejaké návrhy, ako to urobiť? Jedným z nápadov by bolo buď rozšíriť Button
alebo ImageButton
a prepísať metódu draw()
. Ale s mojou súčasnou úrovňou vedomostí naozaj neviem, ako to urobiť (2D vykresľovanie). Možno niekto skúsenejší pozná riešenie alebo aspoň nejaké tipy na začiatok?
Pre používateľov, ktorí chcú len vložiť pozadie, ikonu-obrázok a text do jedného tlačidla
z rôznych súborov: Nastavte na pozadí Button
, drawableTop/Bottom/Rigth/Left a padding atribúty.
<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>
Pre sofistikovanejšie usporiadanie môžete tiež použiť RelativeLayout
a urobiť ho klikateľným.
Tutoriál: Skvelý tutoriál, ktorý pokrýva oba prípady: http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx
Na tento problém existuje oveľa lepšie riešenie.
Stačí vziať normálne tlačidlo Button
a použiť atribúty drawableLeft
a gravity
.
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/my_btn_icon"
android:gravity="left|center_vertical" />
Takto získate tlačidlo, ktoré zobrazuje ikonu v ľavej časti tlačidla a text na pravej strane ikony vertikálne vycentrovaný.
Môžete zavolať setBackground()
na Button
na nastavenie pozadia tlačidla.
Akýkoľvek text sa zobrazí nad pozadím.
Ak hľadáte niečo podobné v xml, existuje:
android:background
atribút, ktorý funguje rovnako.