如题
就是自定义控件在我们使用的时候不展示,尤其是原来是java自定义的,改成kotlin后在xml页面不展示,而且其他的布局也都看不到
传统java写法
public class StarRatingView extends LinearLayout {
public StarRatingView(Context context) {
super(context);
}
public StarRatingView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public StarRatingView(Context context, AttributeSet attrs,int defStyleAttr) {
super(context, attrs, defStyleAttr);
代码内容
}
直接转成kotlin后,下面的这一部分会变成
转为kotlin前
public StarRatingView(Context context, AttributeSet attrs,int defStyleAttr) {
super(context, attrs, defStyleAttr);
代码内容
}
转为kotlin后 其他两个方法参数基本参考下面的
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int){
代码内容
}
这个时候去使用我们的自定义View是不展示任何内容的,也会导致xml报错,
解决办法,参考下面的写法
class StarRatingView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr) {
init{
代码内容
}
....其他方法
}
然后我们再去xml中去调用就可以发现,自定义控件展示了
仅作记录,如有帮助,点个赞吧