博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
继承RelativeLayout 自定义布局
阅读量:6457 次
发布时间:2019-06-23

本文共 4361 字,大约阅读时间需要 14 分钟。

public class HomeToolbarView extends RelativeLayout {    TextView tvTitle;    public HomeToolbarView(Context context) {        super(context);        addView(context);    }    public HomeToolbarView(Context context, AttributeSet attrs) {        super(context, attrs);        addView(context);    }    public HomeToolbarView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        addView(context);    }    public void addView(Context mContext){        ImageView imageViewMenu=new ImageView(mContext);        ImageView imageViewMessage=new ImageView(mContext);        tvTitle=new TextView(mContext);        addView(imageViewMenu);        addView(imageViewMessage);        addView(tvTitle);        RelativeLayout.LayoutParams menuLayoutParams = (RelativeLayout.LayoutParams) imageViewMenu.getLayoutParams();        RelativeLayout.LayoutParams messageLayoutParams = (RelativeLayout.LayoutParams) imageViewMessage.getLayoutParams();        RelativeLayout.LayoutParams titleLayoutParams = (RelativeLayout.LayoutParams) tvTitle.getLayoutParams();        menuLayoutParams.width=getResources().getDimensionPixelOffset(R.dimen.home_toolbar_image_width_heigth);        menuLayoutParams.height=getResources().getDimensionPixelOffset(R.dimen.home_toolbar_image_width_heigth);        menuLayoutParams.setMargins(getResources().getDimensionPixelOffset(R.dimen.common_margin)                ,0,0,0);        menuLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT,TRUE);        menuLayoutParams.addRule(RelativeLayout.CENTER_VERTICAL,TRUE);        titleLayoutParams.width= LayoutParams.MATCH_PARENT;        titleLayoutParams.height=LayoutParams.MATCH_PARENT;        titleLayoutParams.addRule(RelativeLayout.CENTER_IN_PARENT,TRUE);        messageLayoutParams.width=getResources().getDimensionPixelOffset(R.dimen.home_toolbar_image_width_heigth);        messageLayoutParams.height=getResources().getDimensionPixelOffset(R.dimen.home_toolbar_image_width_heigth);        messageLayoutParams.setMargins(0                ,0,getResources().getDimensionPixelOffset(R.dimen.common_margin),0);        messageLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,TRUE);        messageLayoutParams.addRule(RelativeLayout.CENTER_VERTICAL,TRUE);        imageViewMenu.setBackground(ContextCompat.getDrawable(mContext,R.drawable.ico_toolbar_left_menu));        imageViewMessage.setBackground(ContextCompat.getDrawable(mContext,R.drawable.ico_toolbar_left_message));        tvTitle.setText(mContext.getString(R.string.app_name));        tvTitle.setTextSize(getResources().getDimension(R.dimen.textsize_8));        tvTitle.setTextColor(ContextCompat.getColor(mContext,R.color.common_blue));        tvTitle.setGravity(Gravity.CENTER);        imageViewMenu.setOnClickListener(new OnClickListener() {            public void onClick(View v) {                listener.leftClick();            }        });        imageViewMessage.setOnClickListener(new OnClickListener() {            public void onClick(View v) {                listener.rightClick();            }        });        imageViewMenu.setLayoutParams(menuLayoutParams);        imageViewMessage.setLayoutParams(messageLayoutParams);        tvTitle.setLayoutParams(titleLayoutParams);    }    public void setTitle(String title){        tvTitle.setText(title);    }    //自定义的顶部ActionBar的点击监听;    private  HomeToolbarClickListener listener;    //点击事件的监听接口    public interface HomeToolbarClickListener {         void leftClick();         void rightClick();    }    //提供activity调用的方法,类似于Button类的setOnClickListener(OnClickListener listener)    //传入具体实现方法    public void setOnTopbarClickListener(HomeToolbarClickListener listener){        this.listener=listener;    }}
View Code

使用

  

activity    @BindView(R.id.toolbar_home)    HomeToolbarView toolbar_home;        toolbar_home.setTitle(getString(R.string.app_name)); toolbar_home.setOnTopbarClickListener(new HomeToolbarView.HomeToolbarClickListener() {            @Override            public void leftClick() {                if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {                    mDrawerLayout.closeDrawer(Gravity.LEFT);                } else {                    mDrawerLayout.openDrawer(Gravity.LEFT);                }            }            @Override            public void rightClick() {            }        });

展示效果

 

 

转载地址:http://henzo.baihongyu.com/

你可能感兴趣的文章
18、生鲜电商平台-性能优化以及服务器优化的设计与架构
查看>>
类绑定----多态执行问题【编译看左,运行看右】
查看>>
纯css实现开关按钮效果
查看>>
ListView13添加2
查看>>
注册的 通知,即使pop也要移除掉的,因为,再进入还会 加新的,不会覆盖掉的,...
查看>>
2018年6月25每日小结之笔记
查看>>
.net应用程序窗体后台动态添加控件
查看>>
Netty 出站缓冲区 ChannelOutboundBuffer 源码解析(isWritable 属性的重要性)
查看>>
Microsoft.AspNet.Identity.EntityFramework/IdentityDbContext.cs
查看>>
eclipse使用中遇到的问题
查看>>
linux 常用命令
查看>>
数据库设置表的check约束出现乱码
查看>>
Apache Hadoop 2.9.2 的集群管理之服役和退役
查看>>
w3c教程----CSS3
查看>>
Mysql无法启动 InnoDB: Attempted to open a previously opened tablespace
查看>>
codeforces #131(div2) 的总结
查看>>
win7查看端口占用
查看>>
Android广播机制(转)
查看>>
Ocelot(十)- 路由
查看>>
冒泡排序到k趟
查看>>