2014-12-09 28 views
9

Kiedy próbuję użyć Gradient na Lollipop, to nie działa. Chociaż działa we wszystkich poprzednich wersjach.Android Gradient na Lollipop nie działa. - API 21

Oto mój przykład:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
<gradient android:type="radial" android:gradientRadius="500" 
    android:startColor="#00417e" android:endColor="#001b34" /> 

+2

radialne gradienty są łamane w lizak, raport o błędzie https://code.google.com/p/android/issues/detail?id = 77862 –

Odpowiedz

9
+0

Sposób obejścia jest opisany na łączu. Zastanawiam się tylko, czy to obejście może przerwać, a nawet zadziałać, gdy wyjdzie 5.0.x lub 5.x. –

+1

Obejście problemu będzie nadal działać w przyszłych wersjach. Zaktualizowałem połączony błąd śledzenia błędów AOSP, aby to odzwierciedlić. – alanv

+0

@alanv Ktoś w ASOP zamyka wszystkie ważne błędy w ciągu ostatnich kilku dni bez żadnych komentarzy. Niektóre błędy są naprawdę ważne ... Co robicie? http://www.reddit.com/r/androiddev/comments/2on1fe/google_closed_11889_android_bugs_last_48_hours/ –

0

stosowanie tak będzie dobrze:

android:gradientRadius="50%p" 
2
int sdk = android.os.Build.VERSION.SDK_INT; 
    if (sdk < Build.VERSION_CODES.LOLLIPOP) { 
     //in your gradient use android:gradientRadius="500" 
    } else { 
     // in your gradient use android:gradientRadius="80%p" or 
     // android:gradientRadius="200dp" 

Spróbuj napisać dwa różne pliki xml przy użyciu różnych gradientRadius styl

17

miałem ten sam problem i utworzono 2 różne pliki:

w kanału alfa

android:gradientRadius="270" 

i kanału alfa-V21

android:gradientRadius="270dp" 

Teraz działa dobrze.

+1

człowiek, którego uratowałeś mój dzień. Wielkie dzięki. –

+1

Yayy! To działa Dziękuję, mój przyjacielu :) –

1

Wydaje znalazłem inną obejście - zestaw gradientu tła w postaci kodu:

findViewById(R.id.bg).setBackground(ContextCompat.getDrawable(context,R.drawable.bg_gradient)); 
Powiązane problemy