按钮中的Android 9 drawable不显示

时间:2019-09-13 19:50:23

标签: java android android-drawable android-9.0-pie

我在一个按钮上放置了一个可绘制对象,该按钮可在Android 6上使用,但不能在Android 9设备上使用。

相同的代码,没有例外,只是没有显示。首先,我缩放可绘制对象以适合按钮并更改其颜色,这是我的代码:

  

整数scaleWidth = myButton.getWidth();整数刻度高度   = myButton.getHeight();

     

Drawable drawable = getResources()。getDrawable(R.drawable.myDrawable);

     

Drawable wrapdDrawable = DrawableCompat.wrap(drawable);                   DrawableCompat.setTint(wrappedDrawable,iColor);

     

wrappedDrawable.setBounds(0,0,(int)   (wrappedDrawable.getIntrinsicWidth()* 0.5),(int)   (wrappedDrawable.getIntrinsicHeight()* 0.5));                   ScaleDrawable sd = new ScaleDrawable(wrappedDrawable,0,scaleWidth,scaleHeight);

     

myButton.setCompoundDrawables(null,null,sd.getDrawable(),null);

编辑:

这有效:

Drawable drawable = getResources().getDrawable(R.drawable.xxx);
                    Drawable wrappedDrawable = DrawableCompat.wrap(drawable);
                    DrawableCompat.setTint(wrappedDrawable, iColor);

                    wrappedDrawable.setBounds(0, 0, (int) (wrappedDrawable.getIntrinsicWidth() * 0.5), (int) (wrappedDrawable.getIntrinsicHeight() * 0.5));

1 个答案:

答案 0 :(得分:1)

您真的需要以编程方式添加可绘制按钮吗?为什么不尝试在XML文件中设置可绘制对象的实现? 此代码已经在Android 7.0中进行了测试,直到Android 10.0。这是我的代码:

            <Button
                android:id="@+id/btn_tax_receipt"
                style="@style/page_button"
                android:drawableTop="@drawable/ic_receipt_light"
                android:text="@string/title_activity_tax_receipt"
                android:textStyle="bold"
                tools:layout_editor_absoluteX="27dp"
                tools:layout_editor_absoluteY="225dp" />

您可以通过更改 android:drawableTint

的颜色值来更改可绘制对象的颜色

或使用这种更简单的方法:

enter image description here