自己写的TopBar购物车中会用到:
import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; 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.RelativeLayout; import android.widget.TextView; import com.honey.jdcom.R; 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,14f); 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中加上这些就完成了: <declare-styleable name="TopBar"> <attr name="title" format="string"></attr> <attr name="titleSize" format="dimension"></attr> <attr name="titleColor" format="color"></attr> <attr name="leftImageSrc" format="reference|color"></attr> <attr name="rightImageSrc" format="reference|color"></attr> </declare-styleable>
自定义标题TopBar
最新推荐文章于 2020-08-05 15:21:21 发布