首页 > 代码库 > android创建自定义控件

android创建自定义控件

新建一个布局title.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:background="@drawable/title_bg" >    <Button        android:id="@+id/title_back"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_margin="15dip"        android:background="@drawable/back_bg"        android:text="Back"        android:textColor="#fff" />        <TextView         android:id="@+id/title_text"        android:layout_width="0dip"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_weight="1"        android:gravity="center"        android:text="Title Text"        android:textColor="#fff"        android:textSize="24sp"/>        <Button        android:id="@+id/title_edit"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_margin="15dip"        android:background="@drawable/edit_bg"        android:text="Edit"        android:textColor="#fff"/>    </LinearLayout>

新建TitleLayout继承LinearLayout,让他成为我们自定义的标题栏控件,代码如下:

package com.zhangbz.uicustomviews;import android.app.Activity;import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.widget.Button;import android.widget.LinearLayout;import android.widget.Toast;public class TitleLayout extends LinearLayout {    public TitleLayout(Context context, AttributeSet attrs) {        super(context, attrs);        LayoutInflater.from(context).inflate(R.layout.title, this);    }}

重写构造函数,在布局中引入这个控件时就会调用这个构造函数。

修改activity_main.xml,在布局文件中添加这个自定义控件:

    <com.zhangbz.uicustomviews.TitleLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        ></com.zhangbz.uicustomviews.TitleLayout>

注:此处应使用完整类名。

在TitleLayout.java文件中为标题栏中的按钮注册点击事件:

Button titleBack = (Button) findViewById(R.id.title_back);        Button titleEdit = (Button) findViewById(R.id.title_edit);                titleBack.setOnClickListener(new OnClickListener() {                        @Override            public void onClick(View v) {                ((Activity)getContext()).finish();            }        });                titleEdit.setOnClickListener(new OnClickListener() {                        @Override            public void onClick(View v) {                Toast.makeText(getContext(), "You clicked Edit button", 0).show();            }        });

 

android创建自定义控件