Android自定义View与添加点击事件

来源:互联网 发布:linux的隐藏文件 编辑:程序博客网 时间:2024/05/17 03:19

一、新建属性

在新建的module中的values文件夹下新建atts.xml

声明

<declare-styleable name="Topbar">   <attr name="title" format="string"/>   //此处省略10000字</declare-styleable>

二、实现自己的View

可以继承RelativeLayout

创建构造方法

private String title;private TextView mTvTitle;private LayoutParams titleParams;public Topbar(Context context,AttributeSet attrs){  super(context,attrs);  //用系统提供的API,将各种view属性设置进去  TypedArray ta = context.obtainStyledAttributes(attrs,R.styleable.Topbar);  //通过下划线连接  title = ta.getString(R.styleable.Topbar_title);  //为了避免浪费资源,要回收ta  ta.recycle();  mTvTitle = new TextView();  //将标题文字设置  mTvTitle.setText(title);  mTvTitle.setGravity(Gravity.CENTER);  titleParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);  //加入一些规则,这里的TRUE为常量  titleParams.addRule(RelativeLayout.CENTER_IN_PARENT,TRUE);  addView(mTvTitle,titleParams );}

三、使用自定义View

(一)用完整类名引用控件

例如TextView,用类名引入

<com.charon.Topbar</com.charon.Topbar>

(二)引入相应的命名空间

xmlns:topbar="http://schemas.android.com/apk/res-auto"

即可用

 topbar:title="这是一个标题"

四、实现view的点击事件

(一)定义接口

public interface topbarClickListener{  public void leftClick();  public void rightClick();  }

(二)暴露方法

public void setOnTopbarClickListener(topbarClickListener listener){  if(listener == null)  this.listener = listener;}

(三)设置点击事件

// 设置相应的点击事件leftButton.setOnClickListener(new OnClickListener()){  @Override  public void onClick(View v){    listener.leftClick();  }}

(四)调用者的引用

//在Activity中,设置相应的方法topbar.setOnTopbarClickListener(new Topbar.topbarClickListener()){  @Override  public void leftClick(){    //dosomething  }  @Override  public void rightClick(){    //dosomething  }}

五、更多

在Topbar中可以设置很多自定义属性
比如是否可见

public void setLeftIsVisible(boolean flag){  if(flag){    leftButton.setVisibility(View.VISIBLE);  } else {    leftButton.setVisibility(View.GONE);  }}

则可以直接调用这属性。

topbar.setLeftIsVisible(false);

参考:Android 创建UI模板和自定义控件

原创粉丝点击