使用自定义LinearLayout

时间:2017-07-10 16:34:45

标签: android background android-linearlayout

我正在通过扩展LinearLayout来创建自定义视图。 如果用户未指定样式,我想使用默认样式。默认样式应该为LinearLayout设置自定义背景。但它不起作用。

这是我的代码:

public class CustomLinearLayout extends LinearLayout {

    public CustomLinearLayout(Context context) {
        this(context, null, R.style.CustomStyle);
    }

    public CustomLinearLayout(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, R.style.CustomStyle);
    }

    public CustomLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr != 0 ? defStyleAttr : R.style.CustomStyle);
        init(context, attrs);
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public CustomLinearLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, (defStyleAttr != 0 ? defStyleAttr : R.style.CustomStyle), defStyleRes);
        init(context, attrs);
    }

    // ...
}

自定义样式:

<style name="CustomStyle">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:background">@drawable/default_background</item>  <!-- The background is a shape defined in an XML file --> 
</style>

我做错了什么,我该怎么做才能解决这个问题?

如果我在构造函数中调用setBackgroundResource(R.drawable.default_background),它可以工作,但这不是我想要的。

0 个答案:

没有答案