先上图看实现效果:
首先在res/values/ 下建立一个attrs.xml , 在里面定义我们的属性,只定义三个,有间距、分值和是否可以编辑:
<!--StarLinearLayout-->
<declare-styleable name="star">
<attr name="margin" format="dimension|reference"/>
<attr name="isEdit" format="boolean"/>
<attr name="score" format="float"/>
</declare-styleable>
自定义一个View继承LinearLayout,在构造方法中获取我们自定义的属性:
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import java.util.ArrayList;
import java.util.List;
public class StarLinearLayout extends LinearLayout implements OnClickListener {
/**
* 星星之间的间距
*/
private int mMargin = 10;
/**
* 是否可点击
*/
private boolean isEdit;
/**
* 初始的值
*/
private float mScore = 0;
private List<ImageView> stars = new ArrayList<>();
public StarLinearLayout(Context context) {
this(context, null);
}
public StarLinearLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public