自定义 标题栏

public class TopBar extends RelativeLayout {
    private ImageView left_iv,right_iv;
    private TextView title_tv;

    private LayoutParams leftParams,rightParams,titleParams;

    private String title;       //标题
    private int titleColor;     //标题颜色
    private float titleSize;    //标题大小
    private Drawable leftImageSrc;   //左侧图片
    private Drawable rightImageSrc;  //左侧图片

    private TopBarClickListener clickListener;

    public TopBar(Context context) {
        this(context,null);
    }
    public TopBar(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }
    public TopBar(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        //获取自定义属性
        TypedArray ta=context.obtainStyledAttributes(attrs, R.styleable.TopBar);
        //取出对应的值
        title=ta.getString(R.styleable.TopBar_title);
        titleColor=ta.getColor(R.styleable.TopBar_titleColor,0x000);
        titleSize=ta.getDimension(R.styleable.TopBar_titleSize,16f);
        leftImageSrc=ta.getDrawable(R.styleable.TopBar_leftImageSrc);
        rightImageSrc=ta.getDrawable(R.styleable.TopBar_rightImageSrc);

        //调用recycle()  避免重复创建时有误
        ta.recycle();

        //初始化控件
        left_iv=new ImageView(context);
        right_iv=new ImageView(context);
        title_tv=new TextView(context);

        //给控件赋值

        title_tv.setText(title);
        title_tv.setTextColor(titleColor);
        title_tv.setTextSize(titleSize);
        title_tv.setGravity(Gravity.CENTER);

        if(leftImageSrc!=null)
        {
            left_iv.setImageDrawable(leftImageSrc);
        }

        if(rightImageSrc!=null)
        {
            right_iv.setImageDrawable(rightImageSrc);
        }

        //为控件设置对应的布局
        leftParams=new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        leftParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT,TRUE);
        leftParams.addRule(RelativeLayout.CENTER_VERTICAL,TRUE);
        leftParams.setMargins(30,0,0,0);
        addView(left_iv,leftParams);


        rightParams=new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        rightParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,TRUE);
        rightParams.addRule(RelativeLayout.CENTER_VERTICAL,TRUE);
        rightParams.setMargins(0,0,30,0);
        addView(right_iv,rightParams);


        titleParams=new LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        titleParams.addRule(RelativeLayout.CENTER_IN_PARENT,TRUE);
        addView(title_tv,titleParams);

    }

    public void setOnTopBarClickListener(TopBarClickListener listener)
    {
        this.clickListener=listener;
        left_iv.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                clickListener.leftClick();
            }
        });
        right_iv.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                clickListener.rightClick();
            }
        });
    }

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

//style下的

   
   
        
    
    
        
    
    
        
    
    
        
    
    
        
    
    

    
   
   



参考:

http://blog.csdn.net/qq_39698152/article/details/78330972

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值