预览效果

在value中添加resource文件

建立相关类来实现相关的属性

package com.plf.weknow.view;import android.content.Context;import android.content.res.TypedArray;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import com.plf.weknow.R;/** * Created by Peng on 2017/3/3. */public class MyTopbar extends LinearLayout{    //包含的控件    private TextView tvTitle;    private ImageView ivLeft,ivRight;    //包含的属性    private String title;    private int titleColor;    private float titleSize;    private Drawable drLeft,drRight;    //布局参数    private LayoutParams tvParam,leftParam,rightParam;    /**     * 回调接口设置监听事件的处理     * 设置一个必须完成的接口做函方法参数,然后通过该接口对象调用其内部方法     */    public interface topbarClicklistener{        public void leftClick();        public void rightClick();    }    private topbarClicklistener clicklistener;    public void setOnTopbarClick(topbarClicklistener clicklistener){        this.clicklistener = clicklistener;    }    public MyTopbar(Context context, AttributeSet attrs) {        super(context, attrs);        //绑定属性文件        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyTopbar);        //绑定属性        title = typedArray.getString(R.styleable.MyTopbar_mytitle);        titleColor = typedArray.getColor(R.styleable.MyTopbar_mytitleColor, 0);        titleSize = typedArray.getDimension(R.styleable.MyTopbar_mytitleSize, 0);        drLeft = typedArray.getDrawable(R.styleable.MyTopbar_leftBg);        drRight = typedArray.getDrawable(R.styleable.MyTopbar_rightBg);        //新建控件        tvTitle = new TextView(context);        ivLeft = new ImageView(context);        ivRight = new ImageView(context);        /**         * 及时回收,方便重用         */        typedArray.recycle();        //设置属性控件        tvTitle.setText(title);        tvTitle.setTextColor(titleColor);        tvTitle.setTextSize(titleSize);        tvTitle.setGravity(Gravity.LEFT);        ivLeft.setImageDrawable(drLeft);        ivRight.setImageDrawable(drRight);        //添加控件        tvParam = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT,1);        addView(tvTitle, tvParam);   //添加控件并设置其布局        leftParam = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT,0);        addView(ivLeft,leftParam);        rightParam = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT,0);        addView(ivRight,rightParam);        //点击事件        ivLeft.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                clicklistener.leftClick();            }        });        ivRight.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                clicklistener.rightClick();            }        });    }}

在布局中使用

<com.plf.weknow.view.MyTopbar        android:layout_width="match_parent"        android:layout_height="35dp"        android:id="@+id/mybar"        android:background="@color/colorPrimaryDark"        custom:mytitle="hehe"        custom:mytitleColor="#f0f0f0"        custom:mytitleSize="8sp"        custom:leftBg="@drawable/search"        custom:rightBg="@drawable/more">    com.plf.weknow.view.MyTopbar>

更多相关文章

  1. android performClick
  2. android 应用程序 集合
  3. API 25 (Android(安卓)7.1.1 API) widget.ProgressBar——属性分
  4. Android中设置全屏的方法
  5. android之渐变色背景
  6. Android(安卓)跳转+两种ListView+ListheaderView
  7. android 横屏 竖屏 全屏 当前屏幕宽 高
  8. Android中自动跳转到系统设置界面
  9. Android(安卓)反射获得控件对象

随机推荐

  1. android通知栏Notification点击,取消,清除
  2. Android(安卓)多线程 \Looper 分享
  3. Android(安卓)Handle机制
  4. android之Fresco框架--Fresco基本使用
  5. Android图像处理简单例子
  6. Android(安卓)内核编译
  7. NDK r21b 编译FFmpeg 、x264 提供Android
  8. 国际B2C业务团队——无线、技术职位推荐
  9. Android及Java使用google.zxing生成和解
  10. Android(安卓)应用发布全攻略