具有渐变的可绘制视图背景在预览中正确显示但在模拟器中不正确

Posted

技术标签:

【中文标题】具有渐变的可绘制视图背景在预览中正确显示但在模拟器中不正确【英文标题】:Drawable view background with gradient showing correctly in preview but not in emulator 【发布时间】:2020-06-06 16:29:50 【问题描述】:

我想创建一个像分隔线一样淡入边缘的视图。因此,我创建了一个两边都有渐变的可绘制形状,我将其设置为视图的背景。在我的 XML 预览中显示了我想要的结果,但是当我在模拟器中启动应用程序时,drawable 旋转了 90 度,我不知道为什么会这样。

这是我的形状

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:centerColor="@color/white"
        android:endColor="@color/transparent"
        android:startColor="@color/transparent"
        android:type="linear" />
</shape>

这是我的看法

<View
     android:layout_
     android:layout_
     android:background="@drawable/horizontal_fading_divider"
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintTop_toTopOf="@id/recycler_view"
     android:layout_marginTop="40dp"/>

This is how it should look like (Preview)

This is how it actually looks

【问题讨论】:

在渐变中使用角度属性 我的形状旋转正确,因为我想要一个水平渐变,因此我不需要角度。即使我使用一个也不会改变。 @Niceumang 你是对的,谢谢!我确实必须使用角度属性,但不是 90 度而是 0 度?!我以为这是标准,但显然不是。 【参考方案1】:

感谢 Nice umang,我找到了答案。

你必须使用角度属性,即使你不想旋转你的形状以确保它不会在其他地方旋转。

像这样

android:angle="0"

【讨论】:

以上是关于具有渐变的可绘制视图背景在预览中正确显示但在模拟器中不正确的主要内容,如果未能解决你的问题,请参考以下文章

如何在android studio中的可绘制列表中显示图标

如何为我在 Android 中用作背景的可绘制对象添加圆角?

更改方向时正确查看绘图,但在第一次显示时失败

Java Graphics2D - 绘制具有渐变不透明度的图像

用渐变(或纯色)填充特定的可绘制矢量

在具有多个部分的 tableView 中滚动时使用平滑动画更改视图背景渐变颜色