W mojej aplikacji na Androida mam następujący układ:
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
class="com.google.android.gms.maps.SupportMapFragment"/>
<Button
android:id="@+id/button_back"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="CloseActivity"
android:padding="0dp"
android:text="@+string/back" />
</LinearLayout>
W podglądzie i na telefonie wygląda to tak:
Jak widać na przycisku w dolnym obszarze, jest tam trochę wypełnienia.
Jak mogę się tego pozbyć i pozwolić przyciskowi całkowicie wypełnić dolny obszar?
Odpowiedzi:
Dla mnie problemem okazały się minHeight i minWidth w niektórych motywach Androida.
W elemencie Button dodaj:
Lub w stylu twojego przycisku:
źródło
Button
wciąż zajmowałem tyle miejsca, nawet po jego ustawieniuandroid:background="@null"
. Fakt, żeButton
domyślny styl jest odpowiedzialny, jest bardzo dobrą wskazówką.Moje rozwiązanie zostało ustawione na 0 właściwości insetTop i insetBottom.
źródło
To nie jest padding, to cień wokół przycisku w tle do rysowania. Utwórz własne tło, a zniknie.
źródło
Obejściem może być próba użycia
-ve
wartości marginesów, takich jak:Sprawi, że ta przestrzeń zniknie. Mam na myśli, że możesz wybrać odpowiednią
dip
wartość, która sprawi, że zniknie. To zadziałało dla mnie. Mam nadzieję, że Ci się uda.źródło
Aby usunąć wypełnienie wokół przycisku przełączania, musimy ustawić minWidth i minHeight 0dp.
android:minWidth="0dp" android:minHeight="0dp"
ustaw plik rysunkowy na atrybut przycisku, taki jak:
android:button="@drawable/toggle_selector"
Poniżej znajduje się mój
toggle_selecter.xml
plikźródło
Jestem nowy na Androida, ale miałem podobną sytuację. Zrobiłem to, co sugerował @Delyan, a także użyłem Androida: background = "@ null" w pliku układu xml.
źródło
W zestawie XML przycisku
android:includeFontPadding="false"
źródło
Miałem ten sam problem i wydaje się, że dzieje się tak z powodu koloru tła przycisku. Spróbuj zmienić kolor tła na inny, np .:
i zobacz, czy to działa. Następnie możesz zdefiniować styl, jeśli chcesz użyć przycisku.
źródło
Aby usunąć górne i dolne wypełnienie
Aby usunąć lewą i prawą wyściółkę
źródło
To nie jest padding, ale cień tła do rysowania lub problem z
minHeight
iminWidth
.Jeśli nadal chcesz uzyskać efekt miłego tętnienia, możesz stworzyć własny styl przycisków, używając
?attr/selectableItemBackground
:I zastosuj go do przycisku:
źródło
Wydaje się, że nie jest wypełnieniem, marginesem ani minimalną wysokością / szerokością. Ustawienie
android:background="@null"
przycisku traci animację dotykową, ale okazuje się, że ustawienie tła na cokolwiek naprawia granicę.Obecnie współpracuję z:
źródło
Nadaj swojemu przyciskowi niestandardowe tło: @ drawable / material_btn_blue
źródło
Możesz to również zrobić za pomocą
layout_width(height)
parametrów.Np. Usunąłem górną i dolną spację za pomocą
android:layout_height="18dp"
kodu.źródło
Standardowy przycisk nie powinien być używany na pełnej szerokości dlatego tak się dzieje.
tło
Jeśli spojrzysz na materiał projektowy - styl przycisku , zobaczysz, że przycisk ma obszar kliknięcia o wysokości 48dp, ale z jakiegoś powodu zostanie wyświetlony jako 36dp wysokości.
Jest to zarys tła, który widzisz, który nie obejmie całego obszaru samego przycisku.
Ma zaokrąglone rogi i wyściółkę i powinien być klikalny, zawijać zawartość i nie obejmować całej szerokości u dołu ekranu.
Rozwiązanie
Jak wspomniano powyżej, to, czego chcesz, to inne tło . Nie standardowy przycisk, ale tło do wyboru przedmiotu z tym ładnym efektem falowania.
W tym przypadku użycia istnieje
?selectableItemBackground
atrybut motywu, którego można użyć do tła (szczególnie na listach).Dodanie standardowego tętnienia na platformie (lub listy stanów kolorów na <21) i użycie bieżących kolorów motywu.
Na przykład możesz użyć:
Nie ma również potrzeby dodawania wag układu, jeśli widok jest jedyny i obejmuje cały ekran
Jeśli masz inne wyobrażenie o tym, jak powinno wyglądać twoje tło, musisz samodzielnie stworzyć niestandardową grafikę i zarządzać kolorem i stanem.
źródło
Po kilku godzinach kopania wokół wielu odpowiedzi końcu znaleźć rozwiązanie, które nie wykorzystuje się inny element, obróbki
minHeight
lubminWidth
, nawet owijaniaButton
wokółRelativeLayout
.Głównym na wynos jest ustawienie pierwszego planu zamiast tła, o którym mówi wiele odpowiedzi. Zmiana samego tła na
selectableItemBackground
spowoduje po prostu zastąpienie wszelkich zmian dokonanych w kolorze / tle przycisku, jeśli takie istnieją.Zmiana pierwszego planu daje to, co najlepsze z obu światów: pozbądź się „niewidocznego” wypełnienia i zachowaj wygląd przycisku.
źródło
Możesz użyć stylu Bez obramowania w AppCompatButton, jak poniżej. i użyj Androida: tło z nim.
Kod przycisku
Wynik:
źródło