Jestem zdezorientowany stylami guzików do projektowania materiałów. Chciałbym uzyskać kolorowe wypukłe przyciski, jak w załączonym linku., Takie jak przyciski „wymuś zatrzymanie” i „odinstaluj” widoczne w sekcji dotyczącej użytkowania. Czy są dostępne style lub czy muszę je zdefiniować?
http://www.google.com/design/spec/components/buttons.html#buttons-usage
Nie mogłem znaleźć domyślnych stylów przycisków.
Przykład:
<Button style="@style/PrimaryButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calculate"
android:id="@+id/button3"
android:layout_below="@+id/editText5"
android:layout_alignEnd="@+id/editText5"
android:enabled="true" />
Jeśli spróbuję zmienić kolor tła przycisku, dodając
android:background="@color/primary"
wszystkie style znikają, takie jak animacja dotykowa, cień, zaokrąglony narożnik itp.
Odpowiedzi:
Dodam swoją odpowiedź, ponieważ nie używam żadnej z pozostałych podanych odpowiedzi.
W bibliotece pomocy technicznej w wersji 7 wszystkie style są już zdefiniowane i gotowe do użycia. W przypadku standardowych przycisków wszystkie te style są dostępne:
Widget.AppCompat.Button
:Widget.AppCompat.Button.Colored
:Widget.AppCompat.Button.Borderless
Widget.AppCompat.Button.Borderless.Colored
:Aby odpowiedzieć na pytanie, należy zastosować styl
Jak zmienić kolor
Dla całej aplikacji:
Kolor wszystkich kontrolek interfejsu użytkownika (nie tylko przycisków, ale także pływających przycisków akcji, pól wyboru itp.) Jest zarządzany przez atrybut,
colorAccent
jak wyjaśniono tutaj . Możesz zmodyfikować ten styl i zastosować własny kolor w definicji motywu:Dla konkretnego przycisku:
Jeśli chcesz zmienić styl określonego przycisku, możesz zdefiniować nowy styl, dziedzicząc jeden ze stylów nadrzędnych opisanych powyżej. W poniższym przykładzie właśnie zmieniłem kolory tła i czcionek:
Następnie wystarczy zastosować ten nowy styl na przycisku za pomocą:
Aby ustawić domyślny projekt przycisku w układzie, dodaj tę linię do motywu styles.xml:
gdzie
@style/btn
jest twój motyw przycisku. Ustawia styl przycisku dla wszystkich przycisków w układzie z określonym motywemźródło
colorButtonNormal
attr nie działa dla mnie w Androidzie 4.1.2. W ogóle nie można ustawić koloru przycisku (android:background
psuje styl przycisku).style=""
zamiast tegoAndroid:theme=""
zmienić na ten ostatni naprawiłeś dla mnie ten problemNajprostsze rozwiązanie
Krok 1: Użyj najnowszej biblioteki wsparcia
Krok 2: Użyj AppCompatActivity jako nadrzędnej klasy aktywności
Krok 3: Użyj przestrzeni nazw aplikacji w pliku XML układu
Krok 4: Użyj AppCompatButton zamiast Button
źródło
android.support.v7.widget.AppCompatButton
, ponieważ narzędzie build automatycznie używa że gdy podaszButton
textColor
zastępuje kolor tekstu dla stanu wyłączonego .Widget.MaterialComponents.Button.OutlinedButton
.Jeśli dobrze cię rozumiem, chcesz zrobić coś takiego:
W takim przypadku powinno wystarczyć użycie:
Lub dla interfejsu API mniejszego niż 21:
Oprócz korzystania z samouczka dotyczącego motywów materiałowych .
Animowany wariant jest tutaj .
źródło
Oto, jak dostałem to, czego chciałem.
Najpierw zrobiłem przycisk (w
styles.xml
):Tętnienie i tło przycisku, jako rysunek
primary_round.xml
:To dodało efekt marszczenia, którego szukałem.
źródło
Dodaj zależność do
build.gradle
:Następnie dodaj
MaterialButton
do swojego układu:Możesz sprawdzić pełną dokumentację tutaj i API tutaj .
Aby zmienić kolor tła , masz 2 opcje.
backgroundTint
atrybutuCoś jak:
materialThemeOverlay
atrybutu.Coś jak:
Opcja nr 2 wymaga
'com.google.android.material:material:1.1.0'.
OLD Support Library:
Nowa biblioteka pomocy 28.0.0 zawiera teraz bibliotekę projektów
MaterialButton
.Możesz dodać ten przycisk do naszego pliku układu za pomocą:
Domyślnie ta klasa będzie używać koloru akcentu motywu dla koloru tła wypełnionego przyciskami oraz białego dla koloru tekstu przycisków.
Możesz dostosować przycisk za pomocą tych atrybutów:
app:rippleColor
: Kolor używany dla efektu tętnienia przyciskuapp:backgroundTint
: Służy do nakładania odcienia na tło przycisku. Jeśli chcesz zmienić kolor tła przycisku, użyj tego atrybutu zamiast tła.app:strokeColor
: Kolor używany do obrysu przyciskuapp:strokeWidth
: Szerokość używana do obrysu przyciskuapp:cornerRadius
: Służy do definiowania promienia używanego w rogach przyciskuźródło
Oto przykład, który pomoże w konsekwentnym stosowaniu stylu przycisku w Twojej aplikacji.
Oto przykładowy motyw, którego użyłem z określonymi stylami ..
W ten sposób zdefiniowałem kształt i efekty przycisków w folderze res / drawable-v21 ...
Narożniki 2dp mają zachować spójność z motywem Materiał.
źródło
Oprócz
android.support.design.button.MaterialButton
(o którym wspomina Gabriele Mariotti ),Istnieje również inny
Button
widget o nazwie,com.google.android.material.button.MaterialButton
który ma różne style i obejmujeAppCompatButton
:Wypełniony, podwyższony
Button
(domyślnie) :Wypełniony, nieuwzględniony
Button
:Tekst
Button
:Ikona
Button
:Tekst
Button
z ikoną :Przeczytaj: https://material.io/develop/android/components/material-button/
źródło
app:backgroundTint
iapp:backgroundTintMode
z dokumentacji .Próbowałem wielu odpowiedzi i bibliotek stron trzecich, ale żadne nie utrzymywało granicy i podniosło efekt na pre-Lollipop, jednocześnie mając efekt falowania na Lollipop bez wad. Oto moje końcowe rozwiązanie łączące kilka odpowiedzi (obramowanie / podniesienie nie jest dobrze renderowane na gifach z powodu głębi kolorów w skali szarości):
Lizak
Pre-Lollipop
build.gradle
layout.xml
drawable-v21 / btn_bg.xml
drawable / btn_bg.xml
Aktywność jest utworzona
źródło
1) Możesz utworzyć przycisk z zaokrąglonym rogiem, definiując xml do rysowania i możesz zwiększyć lub zmniejszyć promień, aby zwiększyć lub zmniejszyć zaokrąglenie narożnika przycisku. Ustaw ten plik XML do rysowania jako tło przycisku.
2) Aby zmienić domyślną animację przejścia cienia i cienia między stanami przycisków, musisz zdefiniować selektor i zastosować go do przycisku za pomocą właściwości android: stateListAnimator. Pełne informacje na temat dostosowywania przycisków: http://www.zoftino.com/android-button
źródło
Właśnie utworzyłem bibliotekę Androida, która pozwala łatwo modyfikować kolor przycisku i kolor tętnienia
https://github.com/xgc1986/RippleButton
Nie trzeba tworzyć stylu dla każdego przycisku, który ma mieć inny kolor, co pozwala na losowe dostosowanie kolorów
źródło
rippleColor has already been defined
niektórzy użytkownicy wspomnieli o tym już w „problemach”możesz nadać widok lotnictwu, dodając do niego oś Z i może mieć do niej domyślny cień. ta funkcja została udostępniona w podglądzie L i będzie dostępna po jej wydaniu. Na razie możesz po prostu dodać obraz, który nadaje temu wyglądowi tło przycisku
źródło