zoukankan      html  css  js  c++  java
  • 自定义控件的使用方法

    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);

    RelativeLayoutLinearLayout特殊,需要多设置相对属性在代码中动态设置,这些的方法是通过RelativeLayout.LayiutParams的addRule函数

    public void addRule(int verb, int subject)// verb布局属性,subject根据哪个控件ID布局
  • 相关阅读:
    linux-tar备份
    实验
    华为HCIA-命令及配置
    1、基本知识
    linux 安装samba
    POJ 2676 Sudoku (搜索,Dancing Links)
    HDU 1535 Invitation Cards (最短路,附SLF优化SPFA)
    ZOJ 3625 Geek's Collection (数学公式,注意long double输出格式,附输出格式总结)
    SGU 185 Two shortest (最大流)
    SPOJ PROFIT Maximum Profit (最大闭合权子图,最小割)
  • 原文地址:https://www.cnblogs.com/loaderman/p/10191771.html
Copyright © 2011-2022 走看看