如何在android中使用findDrawableByLayerId?

如何在android中使用findDrawableByLayerId?,android,drawable,layer-list,Android,Drawable,Layer List,我想对图层列表中的特定项使用setBounds(),该项用作按钮的背景。但是我无法让LayerDrawable对象调用findDrawableByLayerId() 有人能帮我解决这个问题吗?使用此方法在新的layerdrawable上创建:)我无法使用findDrawableByLayerId() 使用此方法在新的layerdrawable:)上创建。我无法使用findDrawableByLayerId() 如果你想使用finddrawablebayerId(int-id),你应该先做setI

我想对图层列表中的特定项使用setBounds(),该项用作按钮的背景。但是我无法让LayerDrawable对象调用findDrawableByLayerId()


有人能帮我解决这个问题吗?

使用此方法在新的layerdrawable上创建:)我无法使用findDrawableByLayerId()


使用此方法在新的layerdrawable:)上创建。我无法使用findDrawableByLayerId()


如果你想使用
finddrawablebayerId(int-id)
,你应该先做
setId(int-index,int-id)
,如果不是,id总是-1。

如果你想使用
finddrawablebayerId(int-id)
,你应该先做
setId(int-index,int-id)
,如果不是,id总是-1

@Override
public void setBackgroundDrawable(Drawable background) {
    Log.d("button","setting new background  ");
    Drawable[] layers = new Drawable[5];
    Resources resources = getResources();

    layers[0] = resources.getDrawable(R.drawable.outer_rectangle);
    layers[1] = resources.getDrawable(R.drawable.inner_rectangle);
    layers[2] = resources.getDrawable(R.drawable.upper_ovel);
    layers[3] = resources.getDrawable(R.drawable.gradient_fill);
    layers[4] = resources.getDrawable(R.drawable.lower_ovel);

    LayerDrawable layerDrawable = new LayerDrawable(layers);

    layerDrawable.setLayerInset(0, 0, 0, 0, 0);
    layerDrawable.setLayerInset(1, 3, 3, 3, 0);
    layerDrawable.setLayerInset(2, 3, 15, 3, 25);
    layerDrawable.setLayerInset(3, 3, 23, 3, 0);
    layerDrawable.setLayerInset(4, 4, 60, 4, -5);

    super.setBackgroundDrawable(layerDrawable);
}