setBackground()的问题:drawable似乎应用于父级,而不是视图

时间:2016-08-18 10:25:58

标签: android setbackground

我开发了一个扩展View类的自定义视图:

public class ScRectangle extends View implements Parcelable{ ... }

我也创建了以下Drawable:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
<solid
    android:color="@android:color/transparent" />
<corners
    android:radius="@dimen/thickBorder" />
<stroke android:width="@dimen/thickBorder"
    android:color="@color/fab_color_normal" />

然后我尝试将此drawable作为背景应用于上述自定义视图的新实例:

    ScRectangle r = new ScRectangle(this, left, top, right, bottom, "thinBorder", "OrangeState", 0);
    r.setBackground(ContextCompat.getDrawable(mContext, R.drawable.selected_state));
    drawingFrame.addView(r);

rdrawingFrame中唯一的观点。上面的代码正确地在框架内,正确的位置和正确的大小上添加了预期的矩形。但是,drawable似乎适用于drawingFrame而不是r

*****编辑*****

在下图中,r是D5中的浅橙色方形,而drawable是整个网格的深橙色边框。

enter image description here

应如何更改上述代码?

1 个答案:

答案 0 :(得分:0)

覆盖

自定义类中的setBackground方法,并将背景设置为当前视图