Android自定义控件

自定义控件

引入布局

  • 创建title.xml

    • android:background="@drawable/back_bg" 背景图片
    • android:layout_margin="5dp" 控件上下左右偏移距离 也可以marginTop单独指定
    • 在activity_main.xml 中 就可以显示title.xml 标题栏
    
    
        
    
    
    
    • 设置系统自带标题栏隐藏
      1. 调用getSupportActionBar() 方法获得 ActionBar 实例
      2. 调用ActionBar的hide()方法 隐藏标题栏
      public class MainActivity extends AppCompatActivity {
      
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            ActionBar actionBar = getSupportActionBar();
            if(actionBar!=null){
                actionBar.hide();
            }
         }
      }
      
      

创建自定义控件

  • 相同功能的控件
  • 新建TitleLayout 继承自LinearLayout
  • 重写LinearLayout中带有两个参数的构造函数
  • 布局引入TitleLayout 调用这个函数,
  • 通过LinearLayout的from()方法构建一个LayoutInflater对象
  • 调用inflate()方法加载布局文件
  • inflate()接收两个参数 要加载布局的id和加载好的布局再添加一个父布局
    • 新建TitleLayout.java
    public class TitleLayout extends LinearLayout{
     public TitleLayout(Context context, AttributeSet attrs){
         super(context,attrs);
         LayoutInflater.from(context).inflate(R.layout.title,this);
      }
     }
    
    • xml 文件
      
    
    • TitleLayout.java设置点击事件 getContext()
    public class TitleLayout extends LinearLayout {
     public TitleLayout(Context context, AttributeSet attrs) {
         super(context, attrs);
         LayoutInflater.from(context).inflate(R.layout.title, this);
         Button titleEdit = (Button) findViewById(R.id.title_edit);
         titleEdit.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 Toast.makeText(getContext(), "you click edit", Toast.LENGTH_SHORT).show();
             }
         });
         Button titleBack = (Button) findViewById(R.id.title_back);
         titleBack.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 ((Activity) getContext()).finish();
             }
         });
      }
    }
    

    这是我学习Android的笔记,参考书<<第一行代码-第二版>>,感谢郭霖大神
    如有不足之处,可以一起讨论
    附上郭霖的blog http://blog.csdn.net/guolin_blog

你可能感兴趣的:(Android自定义控件)