自定义控件的使用方法
1.自定义一个派生的view或者viewgroup类的控件时,必须实现一个构造函数,有三个构造函数需要实现
如:
public CustomView(Context context) { super(context); } public CustomView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {//xml引用控件,必须实现这个构造函数 super(context, attrs, defStyleAttr); }
动态添加控件
/** * layout_wight定义 */ // LinearLayout rootView = (LinearLayout) findViewById(R.id.root); // CustomView customView = new CustomView(this); // LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); // layoutParams.weight = 1.0f; // rootView.addView(customView, layoutParams); /** * RelativeLayout添加布局规则 */ // RelativeLayout rootView = (RelativeLayout) findViewById(R.id.root); // CustomView customView = new CustomView(this); // RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); // layoutParams.addRule(RelativeLayout.RIGHT_OF, R.id.text); //第一个参数是相对布局的布局属性,第二个参数是指相对哪个控件ID来布局 // rootView.addView(customView, layoutParams); /** * setGravity使用 */ RelativeLayout rootView = (RelativeLayout) findViewById(R.id.root); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 200); layoutParams.addRule(RelativeLayout.RIGHT_OF, R.id.text); Button button = new Button(this); button.setGravity(Gravity.TOP); button.setText("btn"); rootView.addView(button, layoutParams); rootView.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
RelativeLayout比LinearLayout特殊,需要多设置相对属性在代码中动态设置,这些的方法是通过RelativeLayout.LayiutParams的addRule函数
public void addRule(int verb, int subject)// verb布局属性,subject根据哪个控件ID布局
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!