渐变不适用于 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);
}
我在 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);
}