Mam przycisk jak poniżej:
<Button
android:text="Submit"
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
W moim onCreate()
przypadku dzwonię do Button01 w ten sposób:
setContentView(R.layout.main);
View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);
Aplikacja ma tło i chcę ustawić krycie tego przycisku przesyłania. Jak ustawić krycie dla tego widoku? Czy jest to coś, co mogę ustawić po stronie Java, czy mogę ustawić w pliku main.xml?
Po stronie java próbowałem Button01.mutate().SetAlpha(100)
, ale dał mi błąd.
Dziwi mnie DUŻO bardziej skomplikowane odpowiedzi.
XML
Możesz bardzo łatwo zdefiniować alfa w definicji koloru przycisku (lub dowolnego innego widoku) w swoim pliku xml:
W powyższym przykładzie kolor byłby częściowo przezroczystym czerwonym.
Podczas definiowania koloru widoku formatem może być albo,
#RRGGBB
albo#AARRGGBB
, gdzieAA
jest wartość szesnastkowa alfa.FF
byłoby całkowicie nieprzejrzyste i00
całkowicie przejrzyste.Dynamicznie
Jeśli chcesz dynamicznie zmieniać krycie w swoim kodzie, użyj
Gdzie INT waha się od
0
(całkowicie przezroczysty) do255
(całkowicie nieprzezroczysty).źródło
android:color
atrybutu.background
krycie nie jestview
kryciem. Nie jest równoważny w wielu przypadkach użyciaChyba już znalazłeś odpowiedź, ale jeśli nie (i dla innych programistów), możesz to zrobić w następujący sposób:
Tutaj ustawiłem krycie na 45. Można go zasadniczo ustawić w zakresie od 0 (w pełni przezroczysty) do 255 (całkowicie nieprzezroczysty)
źródło
Sugeruję zrobienie niestandardowego koloru ARGB w pliku colours.xml, takiego jak:
następnie ustaw tło przycisku na ten kolor:
Inną rzeczą, którą możesz zrobić, jeśli chcesz bawić się kształtem przycisku, jest utworzenie zasobu z możliwością rysowania kształtu, w którym ustawiasz właściwości, jak powinien wyglądać przycisk:
plik: res / drawable / rounded_corner_box.xml
Następnie użyj tego jako tła przycisku:
źródło
Zgodnie z Android Docs widok alfa ma wartość od 0 do 1. Aby ustawić, użyj czegoś takiego:
źródło
O wiele łatwiej z powyższego. Domyślny atrybut alfa znajduje się dla przycisku
Zakres wynosi od 0 dla pełnego przezroczystości do 1 dla całkowitego krycia.
źródło
Powyżej jest coś, co wiem ... Myślę, że stworzenie niestandardowej klasy przycisków jest najlepszym pomysłem
Poziom API 11
Ostatnio natknąłem się na ten atrybut android: alpha xml, który przyjmuje wartość od 0 do 1. Odpowiednią metodą jest setAlpha (liczba zmiennoprzecinkowa) .
źródło
@android:color/transparent
jako Tło rzeczywiście sprawi, że widok będzie całkowicie przezroczysty. Ta@android:alpha
część wydaje się być uzupełnieniem.Chociaż
btnMybutton.getBackground().setAlpha(45);
jest to dobry pomysł, po prostu stosuje alfa do tła, a nie do całego widoku.Jeśli chcesz zastosować alfa, aby wyświetlić, użyj
btnMybutton.setAlpha(0.30f);
zamiast tego. Dotyczy to krycia w widoku. Przyjmuje wartość od 0 do 1.Doc mówi:
źródło
Wystąpił ten problem z ICS / JB, ponieważ domyślne przyciski motywu Holo składają się z obrazów, które są nieco przezroczyste. W tle jest to szczególnie zauważalne.
Piernik vs. ICS +:
Kopiowanie wszystkich możliwych do rysowania stanów i obrazów dla każdej rozdzielczości i utrwalanie przezroczystych obrazów jest uciążliwe, więc wybrałem brudniejsze rozwiązanie: zawiń przycisk w uchwycie, które ma białe tło. Oto prymitywny rysunek XML (ButtonHolder), który robi dokładnie to:
Twój plik XML
ButtonHolder.xml
styles.xml
Powoduje to jednak powstanie białej ramki, ponieważ obrazy przycisku Holo zawierają marginesy uwzględniające naciśnięcie spacji:
Rozwiązaniem jest więc nadanie białemu tłu marginesu (4 dp dla mnie zadziałało) i zaokrąglonych rogów (2dp), aby całkowicie ukryć biel, a jednocześnie sprawić, że przycisk będzie solidny:
ButtonHolder.xml
Wynik końcowy wygląda następująco:
Powinieneś celować w ten styl dla wersji 14 + i dostosować go lub wykluczyć w przypadku Gingerbread / Honeycomb, ponieważ ich natywne rozmiary przycisków różnią się od ICS i JB (np. Ten dokładny styl za przyciskiem Gingerbread skutkuje niewielką ilością bieli poniżej przycisku).
źródło
W przypadku widoku można ustawić krycie w następujący sposób.
Właściwość
view.setAlpha(int)
jest przestarzała dla wersji API większej niż 11. Odtąd.setAlpha(0.5f)
używana jest właściwość like .źródło
Dla API <11 dla textView color zrobiłem:
Trochę uciążliwe, ale hej, to działa :-)
źródło
Wiem, że ma to już wiele odpowiedzi, ale odkryłem, że dla przycisków najłatwiej jest stworzyć własne selektory .xml i ustawić je na tle tego przycisku. W ten sposób możesz również zmienić stan po naciśnięciu lub włączeniu i tak dalej. Oto krótki fragment tego, którego używam. Jeśli chcesz dodać przezroczystość do dowolnego z kolorów, dodaj wiodącą wartość szesnastkową (#XXcccccc). (XX == „alfa koloru”)
źródło