Android 图层列表未正确动态绘制

Android 图层列表未正确动态绘制,android,Android,我想创建一个可绘制的程序,并设置为文本视图的背景,如下所示 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <solid android:color="@color/listitem_background_color" /> </shape> <

我想创建一个可绘制的程序,并设置为文本视图的背景,如下所示

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
    <solid android:color="@color/listitem_background_color" />
</shape>
</item>
<item android:top="44dp">
<shape android:shape="rectangle">
    <gradient android:angle="270" android:endColor="#7e000000" android:startColor="#7e5b5b5b" />
</shape>
</item>
</layer-list>
视图看起来像这样。正如你所看到的,我想在底部的阴影在中间

请帮我解决这个问题。
提前谢谢。

因为你可以看到我想要放在底部的阴影在中间-你是如何得出20作为图层顶部插图的值的?为什么它会在底部?我不知道解决方案,这就是我为什么要问的原因@Luksprog我不知道,我只是尝试使用随机值,20给了我一个附近的外观。@pskink我想画一个只有渐变的矩形,这样会给textview一些阴影的外观和感觉。在xml中,你有android:top=44dp,而在java中,这些数字应该匹配0,20,0,0
    Drawable[] layers = new Drawable[2];
    ShapeDrawable backgroundRect = new ShapeDrawable(new RectShape());
    backgroundRect.getPaint().setColor(Color.parseColor(familyColor));


    int startColor = Color.parseColor("#7e5b5b5b");
    int endColor = Color.parseColor("#7e000000");
    GradientDrawable lowerShadow = new GradientDrawable(Orientation.TOP_BOTTOM, new int[]{startColor, endColor});
    lowerShadow.setShape(GradientDrawable.RECTANGLE);

    layers[0] = backgroundRect;
    layers[1] = lowerShadow;
    LayerDrawable layerDB = new LayerDrawable(layers);
    layerDB.setLayerInset(0, 0, 0, 0, 0);
    layerDB.setLayerInset(1, 0, 20, 0, 0);

    familyHeaderView.setBackgroundDrawable(layerDB);