EDITED
决定删除所有上一个问题,因为我制作了一个独立的应用程序只是为了解决这个问题。
问题:当定义为Button的背景时,xml drawable在API21上无法正常工作。并适用于所有其他API。包括仍然是棒棒糖的API22。真奇怪..
制作这个独立的应用程序后,我意识到它可能真的是与xml渐变相关的API21错误。所以在这个应用程序中我只放了一个按钮,在其中我将背景设置为可绘制的xml选择器,根据Button的状态更改背景可绘制文件。
据我所知,API21上的只使用了渐变的起始颜色。
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
>
<Button
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/imageView"
android:background="@drawable/key_pressed_selector"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
background_key_default.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="@color/grey"
android:endColor="@color/grey"
/>
<corners android:radius="15dp"/>
background_yellow.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:type="radial"
android:gradientRadius="100"
android:startColor="@color/dark_blue"
android:endColor="@color/yellow"
/>
<corners android:radius="15dp"/>
</shape>
background_pressed_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/background_yellow"
android:state_pressed="true"/>
<item android:drawable="@drawable/background_key_default"/>
</selector>
RES /值/ colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="yellow">#ffff39</color>
<color name="dark_blue">#332ff2</color>
<color name="grey">#b1b2b6</color>
</resources>
答案 0 :(得分:0)
您不必覆盖onTouch()方法
只需尝试将选择器xml文件提供给按钮的背景。
示例强>
<Button
android:id="@+id/id_Login_login_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/your_selector_xmlfile"
android:text="Login" />
答案 1 :(得分:0)
解决!对我来说,版本API21上存在此xml属性android:gradientRadius的错误。
我解决这个问题的方法是创建一个drawable-v21文件夹并复制所有具有此xml属性的xml drawable并使用本附录中的一个:px(像素),dp(密度无关像素),sp(基于首选字体大小的缩放像素),单位为(英寸),毫米(毫米)。
保留默认的drawable文件夹而没有附录。
否则我无法使其工作,当它在API21上工作时它没有在所有其他API上工作,当它在所有其他API上工作时它没有在API21上工作。
对我而言,它就是这样的。
例如:
drawable
android:gradientRadius="110"
<强>抽拉-V21 强>
android:gradientRadius="55%p"