Mam problem ze stosowaniem gradientowego tła do LinearLayout.
Powinno to być stosunkowo proste z tego, co przeczytałem, ale wydaje się, że nie działa. Dla odniesienia opracowuję aktualizację 2.1.
header_bg.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="90"
android:startColor="#FFFF0000"
android:endColor="#FF00FF00"
android:type="linear"/>
</shape>
main_header.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="horizontal"
android:background="@drawable/header_bg">
</LinearLayout>
Jeśli zmienię @ drawable / header_bg na kolor - np. # FF0000, działa to doskonale. Czy brakuje mi czegoś oczywistego?
Odpowiedzi:
Ok, udało mi się to rozwiązać za pomocą selektora. Zobacz kod poniżej:
main_header.xml:
main_header_selector.xml:
Mam nadzieję, że pomoże to komuś, kto ma ten sam problem.
źródło
Możliwe jest również posiadanie trzeciego koloru (środek). I różne kształty.
Na przykład w drawable / gradient.xml:
To daje ci czarno - szaro - czarny (od lewej do prawej), który jest moim ulubionym bankomatem na ciemnym tle.
Pamiętaj, aby dodać gradient.xml jako tło w swoim układzie xml:
Możliwe jest również obracanie za pomocą:
daje linię pionową
i z
daje linię poziomą
Możliwe kąty to:
Istnieje również kilka różnych rodzajów kształtów:
Zaokrąglony kształt:
i prawdopodobnie kilka innych.
Mam nadzieję, że to pomaga, na zdrowie!
źródło
W pliku graficznym XML:
W pliku układu: android: background = "@ drawable / gradient_background"
źródło
Spróbuj usunąć Androida: gradientRadius = „90”. Oto jeden, który działa dla mnie:
źródło
Mój problem polegał na tym, że rozszerzenie .xml nie zostało dodane do nazwy pliku nowo utworzonego pliku XML. Dodanie rozszerzenia .xml rozwiązało mój problem.
źródło
Z Kotlin możesz to zrobić w zaledwie 2 liniach
Zmień wartości kolorów w tablicy
Wynik
źródło
Nie wiem, czy to pomoże komukolwiek, ale mój problem polegał na tym, że próbowałem ustawić gradient na właściwość „src” ImageView w następujący sposób:
Nie jestem w 100% pewien, dlaczego to nie zadziałało, ale teraz to zmieniłem i umieściłem drawable we właściwości „background” rodzica ImageView, która w moim przypadku jest RelativeLayout, tak: (to zadziałało pomyślnie)
źródło
Sprawdziłbym twój kanał alfa na twoich gradientowych kolorach. Dla mnie, kiedy testowałem mój kod, miałem źle ustawiony kanał alfa na kolorach i to nie działało dla mnie. Po ustawieniu kanału alfa wszystko działało!
źródło
Aby to zrobić, możesz użyć widoku niestandardowego. Dzięki temu rozwiązaniu uzyskasz kształty gradientu wszystkich kolorów w twoich projektach:
Tworzę również projekt Open Source GradientView z tym niestandardowym widokiem:
https://github.com/lopspower/GradientView
źródło