我想运行下面的代码,以便在棒棒糖之前的设备上着色按钮的drawable,但是button.getcompounddrawables()在片段的onCreateView方法内部调用时,将返回数组所有4个元素的空值。
如果我在稍后的时间点检查同一个drawable[]数组-比如在按钮单击事件时-我可以看到drawable值已正确分配(3为空,1为有效)。
是否有一些按钮生命周期或片段生命周期,我可以依赖复合drawables数组已经正确初始化?

Drawable[] drawables = button.getCompoundDrawables();
        if( drawables[2] != null){
            Drawable wrapDrawable = DrawableCompat.wrap(drawables[2]);
            DrawableCompat.setTint(wrapDrawable, color);
            button.invalidate();
        }

下面是我使用的lib版本:
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:support-v4:24.1.1'
compile 'com.android.support:design:24.2.0'

应要求,我还包括一些XML代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout        xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
 [...]  >

<Button
    android:id="@+id/bt1"
    android:background="@android:color/transparent"
    android:textAppearance="@style/ConfigButtonTheme"
    android:text="Sincronizar Música"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:drawableEnd="@drawable/ic_chevron_right_white_24dp"
    android:textAlignment="textStart"
    android:layout_width="match_parent"
    android:layout_height="60dp" />

</LinearLayout>

最佳答案

android:drawableEnd更改为android:drawableRight。不确定原因,但DrawableEnd在onCreate()方法中返回null,DrawableRight工作正常。

07-24 09:46
查看更多