Próbuję mieć obraz (jako tło) na przycisku i dodawać dynamicznie, w zależności od tego, co dzieje się w czasie wykonywania, trochę tekstu nad / nad obrazem.
Jeśli korzystam ImageButton
, nie mam nawet możliwości dodania tekstu. Jeśli używam Button
, mogę dodać tekst, ale zdefiniować tylko obraz z android:drawableBottom
podobnymi atrybutami XML, jak tutaj zdefiniowano .
Jednak te atrybuty łączą tylko tekst i obraz w wymiarach xi y, co oznacza, że mogę narysować obraz wokół mojego tekstu, ale nie poniżej / pod tekstem (z osią Z zdefiniowaną jako wychodząca z wyświetlacza).
Wszelkie sugestie, jak to zrobić? Jednym z pomysłów byłoby albo rozszerzenie, Button
albo ImageButton
przesłonięcie metody draw()
. Ale przy obecnym poziomie wiedzy tak naprawdę nie wiem, jak to zrobić (renderowanie 2D). Może ktoś z większym doświadczeniem zna rozwiązanie lub przynajmniej kilka wskazówek na początek?
Odpowiedzi:
Możesz wywołać
setBackground()
a,Button
aby ustawić tło przycisku.Każdy tekst pojawi się nad tłem.
Jeśli szukasz czegoś podobnego w XML, istnieje:
android:background
atrybut, który działa w ten sam sposób.źródło
Dla użytkowników, którzy chcą po prostu umieścić tło, obraz ikony i tekst w jednym
Button
z różnych plików: Ustaw naButton
tle, Drawable Top / Bottom / Rigth / Left i atrybuty padding .Aby uzyskać bardziej wyrafinowaną aranżację, możesz także użyć
RelativeLayout
(lub dowolnego innego układu) i ustawić ją jako klikalną.Samouczek: Świetny samouczek obejmujący oba przypadki: http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx
źródło
b.setCompoundDrawablesWithIntrinsicBound(null,R.drawable.home_icon_test,null,null)
zamiastandroid:drawableTop
ib.setPadding(0,32,0,0)
zamiastandroid:paddingTop
.Istnieje znacznie lepsze rozwiązanie tego problemu.
Wystarczy wziąć normalny
Button
i używaćdrawableLeft
, agravity
atrybuty.W ten sposób otrzymujesz przycisk, który wyświetla ikonę po lewej stronie przycisku i tekst po prawej stronie ikony wyśrodkowanej pionowo .
źródło
źródło
Wystarczy użyć LinearLayout i udawać, że to
Button
- ustawieniebackground
i klikalny jest kluczem:źródło
android:onClick
do swojego widokupo prostu wymień
z
izz całkiem niezła sztuczka ..;)
źródło
Przyjąłem inne podejście niż te tutaj wymienione i działa naprawdę dobrze, więc chciałem się tym podzielić.
Używam stylu, aby utworzyć niestandardowy przycisk z obrazem po lewej i tekstem w środkowej prawej części. Wystarczy wykonać 4 „proste kroki” poniżej:
I. Utwórz 9 łatek, używając co najmniej 3 różnych plików PNG i narzędzia, które masz na: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch. Następnie powinieneś mieć:
button_normal.9.png, button_focused.9.png i button_pressed.9.png
Następnie pobierz lub utwórz ikonę PNG 24x24.
ic_your_icon.png
Zapisz wszystko w folderze drawable / w swoim projekcie na Androida.
II. Utwórz plik XML o nazwie button_selector.xml w swoim projekcie w folderze drawable /. Stany powinny wyglądać tak:
III. Przejdź do folderu wartości / i otwórz lub utwórz plik styles.xml i utwórz następujący kod XML:
ButtonNormalTextWithIcon jest „stylem potomnym”, ponieważ rozszerza ButtonNormalText („styl nadrzędny”).
Zauważ, że zmieniając drawableLeft w stylu ButtonNormalTextWithIcon, na drawableRight, drawableTop lub drawableBottom możesz umieścić ikonę w innym miejscu względem tekstu.
IV. Przejdź do układu / folderu, w którym masz swój XML dla interfejsu użytkownika i przejdź do przycisku, w którym chcesz zastosować styl i sprawić, aby wyglądał tak:
I ... voilà! Masz przycisk z obrazkiem po lewej stronie.
Dla mnie to lepszy sposób, aby to zrobić! ponieważ robiąc to w ten sposób, możesz zarządzać rozmiarem tekstu przycisku osobno od ikony, którą chcesz wyświetlić, i używać tego samego tła do rysowania dla kilku przycisków z różnymi ikonami zgodnymi ze wskazówkami interfejsu użytkownika Androida za pomocą stylów.
Możesz także utworzyć motyw dla swojej aplikacji i dodać do niego „styl nadrzędny”, aby wszystkie przyciski wyglądały tak samo, i zastosować „styl podrzędny” z ikoną tylko tam, gdzie jest to potrzebne.
źródło
źródło
Możesz użyć
drawableTop
(równieżdrawableLeft
itp.) Dla obrazu i ustawić tekst poniżej obrazu, dodającgravity
left|center_vertical
źródło
Ważna aktualizacja
Do rysowania wektorowego
Jeśli używasz rysowania wektorowego, musisz
Został wydany w wersji
1.1.0-alpha01
, więc wersja appcompat powinna być co najmniej1.1.0-alpha01
. Obecna najnowsza wersja to1.1.0-alpha02
, użyj najnowszych wersji dla większej niezawodności, patrz informacje o wersji - link .Użyj
AppCompatTextView
/AppCompatButton
/AppCompatEditText
app:drawableLeftCompat
,app:drawableTopCompat
,app:drawableRightCompat
,app:drawableBottomCompat
,app:drawableStartCompat
iapp:drawableEndCompat
Do regularnego wyciągania
Jeśli nie potrzebujesz rysowania wektorowego, możesz
android:drawableLeft
,android:drawableRight
,android:drawableBottom
,android:drawableTop
TextView
,Button
zeEditText
alboAppCompat
zajęcia.Można osiągnąć wyjścia jak poniżej -
źródło
xmlns:app="http://schemas.android.com/apk/res-auto"
przestrzeni nazw i nie widzę tych rzeczy kompatybilnych z aplikacjami.For vector drawable
punkt ponownie.Mam nadzieję, że moje rozwiązanie będzie odpowiednie dla wielu użytkowników.
Sugeruję, aby tworzyło TextView w twoim stylu. Działa dla mnie idealnie i ma wszystkie funkcje, takie jak przycisk.
Po pierwsze, stwórzmy styl przycisku, którego możesz używać wszędzie ... Tworzę button_with_hover.xml
Po drugie, stwórzmy przycisk podglądu tekstu.
I to jest wynik. Następnie nadaj niestandardowy styl dowolnym kolorom lub innym właściwościom i marginesom. Powodzenia
źródło
http://www.mokasocial.com/2010/04/create-a-button-with-an-image-and-text-android/
źródło
Ten kod działa dla mnie idealnie
źródło
Możesz użyć tego:
w tym umieściłem obraz jako
background
i również dodałem tekst ..!źródło
Lub możesz programowo:
źródło
źródło