我正在通过扩展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)
,它可以工作,但这不是我想要的。