Android GradientDrawable 在布局编辑器预览中看起来不同

Android GradientDrawable Looks Different on Layout Editor Preview

为什么渐变在 Android Studio 预览和实际 Android 设备中看起来不同?以下是屏幕截图:

在Android工作室


在我的 Android phone

这是 drawable/btn_background.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <shape android:shape="rectangle">
            <gradient
                android:startColor="#eee"
                android:endColor="#aaa"/>
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <gradient
                android:startColor="#aaa"
                android:endColor="#eee"/>
        </shape>
    </item>
</selector>

这是两个按钮的 XML 代码:

<Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="display"
            android:text="@string/btn_txt"
            android:textAllCaps="false"
            android:background="@drawable/btn_background"/>

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@drawable/btn_background"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_fullscreen_black" />

是bug还是什么?

我找到了解决问题的方法。我刚刚在渐变可绘制对象中添加了 android:angle 属性:

<item android:state_pressed="false">
    <shape android:shape="rectangle">
        <gradient
            android:startColor="#eee"
            android:endColor="#aaa"
            android:angle="0"/>
    </shape>
</item>

没有 android:angle 属性,Android Studio 和 Android 手机彼此不一致。所以,定义角度解决了这个问题。