渐变不适用于 kitkat 设备 android

Gradinet not applying in kitkat devices android

我在 activity_main.xml 上应用了渐变,当我 运行 在 marshmallow 设备上应用渐变时,但当我 运行 在 kitkat 设备上应用渐变时不应用。这是 activity_main.xml 喜欢

棉花糖UI屏幕:

Kitkat UI 屏幕:

这是activity_main.xml源代码

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_gradient"
android:focusableInTouchMode="true">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</ScrollView>

这是我使用的渐变代码

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
    android:angle="90"
    android:centerColor="#295e7c"
    android:centerY="0"
    android:endColor="#303a70"
    android:gradientRadius="775dp"
    android:startColor="#56a68d"
    android:type="radial" />
<corners android:radius="0dp" />
</shape>

尝试从 gradientRadius

中删除 dp
<gradient
    android:angle="90"
    android:centerColor="#295e7c"
    android:centerY="0"
    android:endColor="#303a70"
    android:gradientRadius="775"
    android:startColor="#56a68d"
    android:type="radial" />

我已经按照你说的实现了代码,它对 kitkat 和 marshmallow 版本都很好用。有一个问题,如果你使用多个布局然后你在那些 类.

中调用这个方法
ssv = (ScrollView) findViewById(R.id.ssv);

    if (Build.VERSION.SDK_INT <= 22) {
    GradientDrawable gradientDrawable = new GradientDrawable(
    GradientDrawable.Orientation.TOP_BOTTOM,
    new int[]{0xFF56a68d, 0xFF295e7c, 0xFF303a70});
    gradientDrawable.setCornerRadius(0f);
    gradientDrawable.setGradientRadius(775f);
    gradientDrawable.setGradientCenter(0.5f, 0);
    gradientDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);
    ssv.setBackgroundDrawable(gradientDrawable);
    }