Jak wyśrodkować ikonę i tekst w przycisku Androida z szerokością ustawioną na „wypełnij rodzica”
Chcę mieć przycisk Androida z ikoną + tekst w środku. Używam atrybutu drawableLeft, aby ustawić obraz, działa to dobrze, jeśli przycisk ma szerokość
"wrap_content", ale muszę rozciągnąć do maksymalnej szerokości, więc używam
"fill_parent" szerokość. Spowoduje to przeniesienie mojej ikony bezpośrednio na lewo od przycisku i chcę, aby zarówno ikona, jak i tekst były wyśrodkowane wewnątrz przycisku.Próbowałem dostosować dopełnienie, ale to pozwala na podanie tylko stałej wartości, więc nie tego potrzebuję. Potrzebuję wyśrodkowania ikony + tekstu.
<Button
android:id="@+id/startTelemoteButton"
android:text="@string/start_telemote"
android:drawableLeft="@drawable/start"
android:paddingLeft="20dip"
android:paddingRight="20dip"
android:width="fill_parent"
android:heigh="wrap_content"/>
Jakieś sugestie, jak mogę to osiągnąć?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
25 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
W przypadku atrybutu systemu Android 4.0 (poziom interfejsu API 14) można użyć atrybutu android: drawableStart, aby umieścić rysunek na początku tekstu. Jedynym rozwiązaniem kompatybilnym wstecz, które wymyśliłem, jest użycie
ImageSpan
http://developer.android.com/r ... .html
aby utworzyć tekst + obraz objęty:
W moim przypadku musiałem również dostosować atrybut android: gravity Button, aby wyglądał na wyśrodkowany:
Anonimowy użytkownik
Potwierdzenie od:
Znalazłem to rozwiązanie stąd:
Problem z interfejsem użytkownika Androida: tworzenie przycisku z wyśrodkowanym tekstem i ikoną
http://porcupineprogrammer.blo ... .html
Anonimowy użytkownik
Potwierdzenie od:
Wszystkie poprzednie odpowiedzi wydają się być nieaktualne
Teraz możesz użyć , który pozwala ustawić wagę ikony.
https://i.stack.imgur.com/jX67S.png
Aby użyć komponentów materiałowych, potrzebujesz oczywiście:
Dodaj zależność (użyj najnowszej wersji)
Ustaw swój motyw jako rozszerzony motyw komponentów materiałowych
Jeśli nie możesz tego zrobić, rozszerz go z motywu Material Bridge
Anonimowy użytkownik
Potwierdzenie od:
LinearLayout
zamiast
Button
. OnClickListener
którego muszę użyć, działa również świetnie dla LinearLayout.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Następnie po prostu zadzwoń do na .
Mam nadzieję, że to komuś pomoże, ponieważ wydaje się, że jest to bardzo powszechny problem. :)
Anonimowy użytkownik
Potwierdzenie od:
tutaj
https://gist.github.com/rajivnarayana/5224881
Za pomocą
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Utwórz RelativeLayout „wrap_content” z obrazem przycisku jako tłem lub samym przyciskiem jako pierwszym elementem układu. Weź LinearLayout i ustaw go na „layout_centerInParent” i „wrap_content”. Następnie ustaw swój Drawable na Imageview. Na koniec zainstaluj TextView z tekstem (ustawienia regionalne).
więc w zasadzie masz taką strukturę:
lub tak:
Wiem, że jest wiele elementów, z którymi można sobie poradzić w tym rozwiązaniu, ale bardzo łatwo można za jego pomocą stworzyć własny niestandardowy przycisk, a także ustawić dokładne położenie tekstu i rysunków :)
Anonimowy użytkownik
Potwierdzenie od:
https://i.stack.imgur.com/vGIdF.png
Zauważ, że klikalny obszar przycisków w Przykładzie 3 jest taki sam jak w Przykładzie 2 (tj. Ze spacjami), który różni się od Przykładu 4, gdzie nie ma między nimi "niemożliwych do kliknięcia" przerw.
Kod:
Anonimowy użytkownik
Potwierdzenie od:
OmegaCenterIconButton
https://github.com/Omega-R/OmegaCenterIconButton
https://i.stack.imgur.com/RnR28.png
Anonimowy użytkownik
Potwierdzenie od:
Klasa IButton w języku Java
:
}
Układ ibutton.xml
Aby użyć tego niestandardowego widżetu
:
Musisz podać przestrzeń nazw dla atrybutów niestandardowych
xmlns:ibutton="http://schemas.android.com/apk ... ot%3B
gdzie com.test.android.xxx to główny pakiet aplikacji.
Po prostu umieść to pod xmlns: android = "http://schemas.android.com/apk/res/android".
Ostatnią rzeczą, której potrzebujesz, są atrybuty niestandardowe w attrs.xml.
W latach 40
Aby uzyskać lepsze pozycjonowanie, zawiń niestandardowy Button wewnątrz LinearLayout, jeśli chcesz uniknąć potencjalnych problemów z pozycjonowaniem w RelativeLayout.
Cieszyć się!
Anonimowy użytkownik
Potwierdzenie od:
CenterDrawableButton.java
attrs.xml
za pomocą
Anonimowy użytkownik
Potwierdzenie od:
Umieść FrameLayout w LinearLayout i ustaw orientację poziomą.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
setPadding
http://developer.android.com/r ... 28int,%20int,%20int,%20int%29
.
Szerokość rysunku jest stała i możesz go wyświetlić i obliczyć lub zgadnąć szerokość tekstu.
Na koniec będziesz musiał pomnożyć wartość wypełnienia przez gęstość ekranu, co możesz zrobić
DisplayMetrics
http://developer.android.com/r ... .html
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
biblioteka
https://github.com/steelkiwi/CenteredContentButton
CenteredContentButton
Anonimowy użytkownik
Potwierdzenie od:
}
Anonimowy użytkownik
Potwierdzenie od:
Obliczenie prawidłowego wypełnienia rozwiązuje ten cel. Jednak w przypadku zróżnicowanego ekranu użyj innego odstępnika i umieść tę wartość w Interesource w odpowiednim folderze.
Anonimowy użytkownik
Potwierdzenie od:
RelativeLayout
(pojemnik) i
android:layout_centerHorizontal="true"
moja próbka:
Anonimowy użytkownik
Potwierdzenie od:
Dzięki temu rozwiązaniu, jeśli Twój add
@color/your_color
@color/your_highlight_color
w swoim motywie działania możesz mieć motyw materiału na lizaku z cieniem i falowaniem, a dla poprzedniej wersji płaski przycisk z Twoim kolorem i podświetleniem koloru po kliknięciu.
Co więcej, przy pomocy tego rozwiązania obraz jest autorezowany
Wynik:
Najpierw na urządzeniach Lollipop
Po drugie: na urządzeniach typu pre-Lollipop
3: przycisk urządzenia pre-lollipop
https://i.stack.imgur.com/eufDz.png
Anonimowy użytkownik
Potwierdzenie od:
left | centerVertical
a dla małej przerwy między widokiem a ikoną użyłem
Anonimowy użytkownik
Potwierdzenie od:
Ponieważ układ linii działa jak kontener, a ten z selektorem po kliknięciu całego układu linii będzie wyglądał dokładnie tak, jak powinien. jeśli chcesz, aby był wyśrodkowany w tym samym czasie, użyj względnej instancji. Jeśli chcesz, aby był wyśrodkowany w poziomie, zmień orientację na poziomą.
Uwaga,
co nie
zapomnij dodać
android:clickable="true"
do głównego pojemnika (względnego lub liniowego), aby akcja miała miejsce.
Ponownie, może to być stary wątek, ale nadal może komuś pomóc.
- hura, mam nadzieję, że to pomoże -
szczęśliwe kodowanie.