以编程方式在Android的图层列表中设置位图

3
我需要以编程的方式通过@+id/calendar_day_bottom_icon在图层列表中设置不同的图标。
    <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/calendar_date_today_bg"/>

    <item android:id="@+id/calendar_day_bottom_icon" >
        <bitmap
            android:src="@drawable/ic_calendar_journal"
            android:gravity="bottom|center" />
    </item>
</layer-list>

在代码中,我会执行以下操作

LayerDrawable layerDrawable = (LayerDrawable) cellView.getBackground();          
BitmapDrawable drawable = (BitmapDrawable) getResources().getDrawable(R.drawable.ic_calendar_journal_reminder);
layerDrawable.setDrawableByLayerId(R.id.calendar_day_bottom_icon, drawable);

图标插入错误。
我希望使用这个图标: enter image description here 但实际上是: enter image description here

使用 bottom 替代 bottom|center。 - Andolasoft Inc
android:gravity="bottom|center" 转换为 android:gravity="bottom" - Abdul Wahab
它不工作 :((( 有什么想法吗? - elya_a
1个回答

1
我用另一个可绘制文件找到了解决方案:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap
            android:gravity="bottom"
            android:src="@drawable/ic_calendar_journal" />
    </item>
</layer-list>

获取可绘制对象
LayerDrawable layerDrawable = (LayerDrawable) ContextCompat.getDrawable(context, R.drawable.calendar_layers);

获取LayerDrawable,获取图层项目并将其设置为另一个LayerDrawable。
LayerDrawable cellLayerDrawable = (LayerDrawable) cellView.getBackground();
Drawable drawable = layerDrawable.getDrawable(0);                    
cellLayerDrawable.setDrawableByLayerId(R.id.calendar_day_bottom_icon, drawable);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接