轉載請註明出處: http://blog.csdn.net/forwardyzk/article/details/43760891
在開發中在Activity,Fragment中,我們一般都會增加標題的展示,現在自定義一個控件,可以在每個界面都可以使用。下面先看一下效果圖:
使用的方法是自定義屬性,首先在res/values/attres.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="TitleView">
<!--左側TextView屬性-->
<attr name="title_LeftText" format="string"></attr>
<attr name="title_LeftColor" format="color|reference"></attr>
<attr name="title_LeftBg" format="color|reference"></attr>
<attr name="title_LeftSize" format="dimension"></attr>
<attr name="title_LeftPadding" format="dimension"></attr>
<attr name="title_LeftPaddingLeft" format="dimension"></attr>
<attr name="title_LeftPaddingRight" format="dimension"></attr>
<attr name="title_LeftPaddingBottom" format="dimension"></attr>
<attr name="title_LeftPaddingTop" format="dimension"></attr>
<attr name="title_LeftMargin" format="dimension"></attr>
<attr name="title_LeftMarginBottom" format="dimension"></attr>
<attr name="title_LeftMarginTop" format="dimension"></attr>
<attr name="title_LeftMarginLeft" format="dimension"></attr>
<attr name="title_LeftMarginRight" format="dimension"></attr>
<attr name="title_LeftVisibility">
<enum name="GONE" value="0"></enum>
<enum name="INVISIBLE" value="1"></enum>
<enum name="VISIBLE" value="2"></enum>
</attr>
<!--右側TextView屬性-->
<attr name="title_RightText" format="string"></attr>
<attr name="title_RightColor" format="color|reference"></attr>
<attr name="title_RightBg" format="color|reference"></attr>
<attr name="title_RightSize" format="dimension"></attr>
<attr name="title_RightPadding" format="dimension"></attr>
<attr name="title_RightPaddingLeft" format="dimension"></attr>
<attr name="title_RightPaddingRight" format="dimension"></attr>
<attr name="title_RightPaddingBottom" format="dimension"></attr>
<attr name="title_RightPaddingTop" format="dimension"></attr>
<attr name="title_RightMargin" format="dimension"></attr>
<attr name="title_RightMarginBottom" format="dimension"></attr>
<attr name="title_RightMarginTop" format="dimension"></attr>
<attr name="title_RightMarginLeft" format="dimension"></attr>
<attr name="title_RightMarginRight" format="dimension"></attr>
<attr name="title_RightVisibility">
<enum name="GONE" value="0"></enum>
<enum name="INVISIBLE" value="1"></enum>
<enum name="VISIBLE" value="2"></enum>
</attr>
<!--中間TextView屬性-->
<attr name="title_MiddleText" format="string"></attr>
<attr name="title_MiddleColor" format="color|reference"></attr>
<attr name="title_MiddleBg" format="color|reference"></attr>
<attr name="title_MiddleSize" format="dimension"></attr>
<attr name="title_MiddlePadding" format="dimension"></attr>
<attr name="title_MiddlePaddingLeft" format="dimension"></attr>
<attr name="title_MiddlePaddingRight" format="dimension"></attr>
<attr name="title_MiddlePaddingBottom" format="dimension"></attr>
<attr name="title_MiddlePaddingTop" format="dimension"></attr>
<attr name="title_MiddleMargin" format="dimension"></attr>
<attr name="title_MiddleMarginBottom" format="dimension"></attr>
<attr name="title_MiddleMarginTop" format="dimension"></attr>
<attr name="title_MiddleMarginLeft" format="dimension"></attr>
<attr name="title_MiddleMarginRight" format="dimension"></attr>
<attr name="title_MiddleVisibility">
<enum name="GONE" value="0"></enum>
<enum name="INVISIBLE" value="1"></enum>
<enum name="VISIBLE" value="2"></enum>
</attr>
</declare-styleable>
</resources>
屬性有左側TextView,右側TextView和中間TextView
設置文本的顏色,大小,文本內容
設置TextView的背景
設置TextView的Padding,PaddinfLeft,PaddingRight,PaddingTop,PaddingBottom
設置TextView的Margin,MarginLeft,MarginRight,MarginTop,MarginBottom
設置TextView是否顯示
自定義TitleView繼承RelativeLayout
public class TitleView extends RelativeLayout {
private Context mContext;
private float DEFAULT_TEXT_SIZE = 20;
private int DEFAULT_TEXT_COLOR = Color.BLACK;
private float DEFAULT_PADDING = 2;
private float DEFAULT_MARGIN = 0;
private int GONE = 0;
private int INVISIBLE = 1;
private int VISIBLE = 2;
//左側屬性
private String leftText;
private float leftSize;
private int leftColor;
private Drawable leftBg;
private float leftPadding;
private float leftPaddingLeft;
private float leftPaddingRight;
private float leftPaddingTop;
private float leftPaddingBottom;
private float leftMargin;
private float leftMarginLeft;
private float leftMarginRight;
private float leftMarginBottom;
private float leftMarginTop;
//右側屬性
private String rightText;
private float rightSize;
private int rightColor;
private Drawable rightBg;
private float rightPadding;
private float rightPaddingLeft;
private float rightPaddingRight;
private float rightPaddingTop;
private float rightPaddingBottom;
private float rightMargin;
private float rightMarginLeft;
private float rightMarginRight;
private float rightMarginBottom;
private float rightMarginTop;
//中間屬性
private String middleText;
private float middleSize;
private int middleColor;
private Drawable middleBg;
private float middlePadding;
private float middlePaddingLeft;
private float middlePaddingRight;
private float middlePaddingTop;
private float middlePaddingBottom;
private float middleMargin;
private float middleMarginLeft;
private float middleMarginRight;
private float middleMarginBottom;
private float middleMarginTop;
private TextView leftTextView;
private TextView rightTextView;
private TextView middleTextView;
private int leftVisibity;
private int rightVisibity;
private int middleVisibity;
private OnClickTitleViewListener mOnClickTitleViewListener;
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public TitleView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.TitleView);
// 獲取左側TextView屬性
leftText = typedArray.getString(R.styleable.TitleView_title_LeftText);
leftSize = typedArray.getDimension(R.styleable.TitleView_title_LeftSize, DEFAULT_TEXT_SIZE);
leftColor = typedArray.getColor(R.styleable.TitleView_title_LeftColor, DEFAULT_TEXT_COLOR);
leftBg = typedArray.getDrawable(R.styleable.TitleView_title_LeftBg);
leftPadding = typedArray.getDimension(R.styleable.TitleView_title_LeftPadding, DEFAULT_PADDING);
leftPaddingLeft = typedArray.getDimension(R.styleable.TitleView_title_LeftPaddingLeft, DEFAULT_PADDING);
leftPaddingRight = typedArray.getDimension(R.styleable.TitleView_title_LeftPaddingRight, DEFAULT_PADDING);
leftPaddingTop = typedArray.getDimension(R.styleable.TitleView_title_LeftPaddingTop, DEFAULT_PADDING);
leftPaddingBottom = typedArray.getDimension(R.styleable.TitleView_title_LeftPaddingBottom, DEFAULT_PADDING);
if (leftPadding != DEFAULT_PADDING) {
leftPaddingLeft = leftPaddingRight = leftPaddingTop = leftPaddingBottom = leftPadding;
}
leftMargin = typedArray.getDimension(R.styleable.TitleView_title_LeftMargin, DEFAULT_MARGIN);
leftMarginTop = typedArray.getDimension(R.styleable.TitleView_title_LeftMarginTop, DEFAULT_MARGIN);
leftMarginBottom = typedArray.getDimension(R.styleable.TitleView_title_LeftMarginBottom, DEFAULT_MARGIN);
leftMarginRight = typedArray.getDimension(R.styleable.TitleView_title_LeftMarginRight, DEFAULT_MARGIN);
leftMarginLeft = typedArray.getDimension(R.styleable.TitleView_title_LeftMarginLeft, DEFAULT_MARGIN);
if (leftMargin != DEFAULT_MARGIN) {
leftMarginLeft = leftMarginRight = leftMarginTop = leftMarginBottom = leftMargin;
}
//獲取右側TextView屬性
rightText = typedArray.getString(R.styleable.TitleView_title_RightText);
rightSize = typedArray.getDimension(R.styleable.TitleView_title_RightSize, DEFAULT_TEXT_SIZE);
rightColor = typedArray.getColor(R.styleable.TitleView_title_RightColor, DEFAULT_TEXT_COLOR);
rightBg = typedArray.getDrawable(R.styleable.TitleView_title_RightBg);
rightPadding = typedArray.getDimension(R.styleable.TitleView_title_RightPadding, DEFAULT_PADDING);
rightPaddingLeft = typedArray.getDimension(R.styleable.TitleView_title_RightPaddingLeft, DEFAULT_PADDING);
rightPaddingRight = typedArray.getDimension(R.styleable.TitleView_title_RightPaddingRight, DEFAULT_PADDING);
rightPaddingTop = typedArray.getDimension(R.styleable.TitleView_title_RightPaddingTop, DEFAULT_PADDING);
rightPaddingBottom = typedArray.getDimension(R.styleable.TitleView_title_RightPaddingBottom, DEFAULT_PADDING);
if (rightPadding != DEFAULT_PADDING) {
rightPaddingLeft = rightPaddingRight = rightPaddingTop = rightPaddingBottom = rightPadding;
}
rightMargin = typedArray.getDimension(R.styleable.TitleView_title_RightMargin, DEFAULT_MARGIN);
rightMarginTop = typedArray.getDimension(R.styleable.TitleView_title_RightMarginTop, DEFAULT_MARGIN);
rightMarginBottom = typedArray.getDimension(R.styleable.TitleView_title_RightMarginBottom, DEFAULT_MARGIN);
rightMarginRight = typedArray.getDimension(R.styleable.TitleView_title_RightMarginRight, DEFAULT_MARGIN);
rightMarginLeft = typedArray.getDimension(R.styleable.TitleView_title_RightMarginLeft, DEFAULT_MARGIN);
if (rightMargin != DEFAULT_MARGIN) {
rightMarginLeft = rightMarginRight = rightMarginTop = rightMarginBottom = rightMargin;
}
//中間TextView屬性
middleText = typedArray.getString(R.styleable.TitleView_title_MiddleText);
middleSize = typedArray.getDimension(R.styleable.TitleView_title_MiddleSize, DEFAULT_TEXT_SIZE);
middleColor = typedArray.getColor(R.styleable.TitleView_title_MiddleColor, DEFAULT_TEXT_COLOR);
middleBg = typedArray.getDrawable(R.styleable.TitleView_title_MiddleBg);
middlePadding = typedArray.getDimension(R.styleable.TitleView_title_MiddlePadding, DEFAULT_PADDING);
middlePaddingLeft = typedArray.getDimension(R.styleable.TitleView_title_MiddlePaddingLeft, DEFAULT_PADDING);
middlePaddingRight = typedArray.getDimension(R.styleable.TitleView_title_MiddlePaddingRight, DEFAULT_PADDING);
middlePaddingTop = typedArray.getDimension(R.styleable.TitleView_title_MiddlePaddingTop, DEFAULT_PADDING);
middlePaddingBottom = typedArray.getDimension(R.styleable.TitleView_title_MiddlePaddingBottom, DEFAULT_PADDING);
if (middlePadding != DEFAULT_PADDING) {
middlePaddingLeft = middlePaddingRight = middlePaddingTop = middlePaddingBottom = middlePadding;
}
middleMargin = typedArray.getDimension(R.styleable.TitleView_title_MiddleMargin, DEFAULT_MARGIN);
middleMarginTop = typedArray.getDimension(R.styleable.TitleView_title_MiddleMarginTop, DEFAULT_MARGIN);
middleMarginBottom = typedArray.getDimension(R.styleable.TitleView_title_MiddleMarginBottom, DEFAULT_MARGIN);
middleMarginRight = typedArray.getDimension(R.styleable.TitleView_title_MiddleMarginRight, DEFAULT_MARGIN);
middleMarginLeft = typedArray.getDimension(R.styleable.TitleView_title_MiddleMarginLeft, DEFAULT_MARGIN);
if (middleMargin != DEFAULT_MARGIN) {
middleMarginLeft = middleMarginRight = middleMarginTop = middleMarginBottom = middleMargin;
}
//是否顯示
middleVisibity = typedArray.getInt(R.styleable.TitleView_title_MiddleVisibility, VISIBLE);
leftVisibity = typedArray.getInt(R.styleable.TitleView_title_LeftVisibility, VISIBLE);
rightVisibity = typedArray.getInt(R.styleable.TitleView_title_RightVisibility, VISIBLE);
initTextView();
setAttributeSet();
setTitleListener();
}
/**
* init leftTextView,rightTextView,middleTextView
*/
private void initTextView() {
leftTextView = new TextView(mContext);
rightTextView = new TextView(mContext);
middleTextView = new TextView(mContext);
//left
LayoutParams leftParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
leftParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, TRUE);
leftParams.addRule(RelativeLayout.CENTER_VERTICAL, TRUE);
leftParams.setMargins((int) leftMargin, (int) leftMargin, (int) leftMargin, (int) leftMargin);
leftParams.setMargins((int) leftMarginLeft, (int) leftMarginTop, (int) leftMarginRight, (int) leftMarginBottom);
leftTextView.setLayoutParams(leftParams);
leftTextView.setPadding((int) leftPadding, (int) leftPadding, (int) leftPadding, (int) leftPadding);
leftTextView.setPadding((int) leftPaddingLeft, (int) leftPaddingTop, (int) leftPaddingRight, (int) leftPaddingBottom);
//right
LayoutParams rightParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
rightParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, TRUE);
rightParams.addRule(RelativeLayout.CENTER_VERTICAL, TRUE);
rightParams.setMargins((int) rightMargin, (int) rightMargin, (int) rightMargin, (int) rightMargin);
rightParams.setMargins((int) rightMarginLeft, (int) rightMarginTop, (int) rightMarginRight, (int) rightMarginBottom);
rightTextView.setLayoutParams(rightParams);
rightTextView.setPadding((int) rightPadding, (int) rightPadding, (int) rightPadding, (int) rightPadding);
rightTextView.setPadding((int) rightPaddingLeft, (int) rightPaddingTop, (int) rightPaddingRight, (int) rightPaddingBottom);
//middle
LayoutParams middleParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
middleParams.addRule(RelativeLayout.CENTER_IN_PARENT, TRUE);
middleParams.setMargins((int) middleMargin, (int) middleMargin, (int) middleMargin, (int) middleMargin);
middleParams.setMargins((int) middleMarginLeft, (int) middleMarginTop, (int) middleMarginRight, (int) middleMarginBottom);
middleTextView.setLayoutParams(middleParams);
middleTextView.setPadding((int) middlePadding, (int) middlePadding, (int) middlePadding, (int) middlePadding);
middleTextView.setPadding((int) middlePaddingLeft, (int) middlePaddingTop, (int) middlePaddingRight, (int) middlePaddingBottom);
addView(leftTextView);
addView(rightTextView);
addView(middleTextView);
}
/**
* set leftTextView,rightTextView,middleTextView AttributeSet
*/
private void setAttributeSet() {
//left
leftTextView.setText(leftText);
leftTextView.setTextSize(leftSize);
leftTextView.setTextColor(leftColor);
leftTextView.setBackground(leftBg);
//right
rightTextView.setText(rightText);
rightTextView.setTextSize(rightSize);
rightTextView.setTextColor(rightColor);
rightTextView.setBackground(rightBg);
//middle
middleTextView.setText(middleText);
middleTextView.setTextSize(middleSize);
middleTextView.setTextColor(middleColor);
middleTextView.setBackground(middleBg);
setTextViewVisibility(middleTextView, middleVisibity);
setTextViewVisibility(leftTextView, leftVisibity);
setTextViewVisibility(rightTextView, rightVisibity);
}
/**
* set leftTextView,rightTextView,middleTextView Visibility
*/
private void setTextViewVisibility(TextView tv, int visibility) {
if (visibility == GONE || visibility == View.GONE) {
tv.setVisibility(View.GONE);
} else if (visibility == INVISIBLE || visibility == View.INVISIBLE) {
tv.setVisibility(View.INVISIBLE);
} else if (visibility == VISIBLE || visibility == View.VISIBLE) {
tv.setVisibility(View.VISIBLE);
}
}
/**
* set leftTextView,rightTextView,middleTextView OnClickListener
*/
private void setTitleListener() {
leftTextView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mOnClickTitleViewListener != null) {
mOnClickTitleViewListener.onClickLeft();
}
}
});
rightTextView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mOnClickTitleViewListener != null) {
mOnClickTitleViewListener.onClickRight();
}
}
});
middleTextView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mOnClickTitleViewListener != null) {
mOnClickTitleViewListener.onClickMiddle();
}
}
});
}
public interface OnClickTitleViewListener {
public void onClickLeft();
public void onClickRight();
public void onClickMiddle();
}
public void setOnClickTitleViewListener(OnClickTitleViewListener onClickTitleViewListener) {
this.mOnClickTitleViewListener = onClickTitleViewListener;
}
/**
* set leftTextView visibity
*
* @param visibity
*/
public void setLeftVisibity(int visibity) {
setTextViewVisibility(leftTextView, visibity);
}
/**
* set rightTextView visibity
*
* @param visibity
*/
public void setRightVisibity(int visibity) {
setTextViewVisibility(rightTextView, visibity);
}
/**
* set middleTextView visibity
*
* @param visibity
*/
public void setMiddleVisibity(int visibity) {
setTextViewVisibility(middleTextView, visibity);
}
/**
* set left textview margins
*
* @param left
* @param top
* @param right
* @param bottom
*/
public void setLeftMargins(int left, int top, int right, int bottom) {
LayoutParams layoutParams = (LayoutParams) leftTextView.getLayoutParams();
layoutParams.setMargins(left, top, right, bottom);
leftTextView.setLayoutParams(layoutParams);
}
/**
* set right textview margins
*
* @param left
* @param top
* @param right
* @param bottom
*/
public void setRightMargins(int left, int top, int right, int bottom) {
LayoutParams layoutParams = (LayoutParams) rightTextView.getLayoutParams();
layoutParams.setMargins(left, top, right, bottom);
rightTextView.setLayoutParams(layoutParams);
}
/**
* set middle textview margins
*
* @param left
* @param top
* @param right
* @param bottom
*/
public void setMiddleMargins(int left, int top, int right, int bottom) {
LayoutParams layoutParams = (LayoutParams) middleTextView.getLayoutParams();
layoutParams.setMargins(left, top, right, bottom);
middleTextView.setLayoutParams(layoutParams);
}
/**
* set left textview padding
*
* @param left
* @param top
* @param right
* @param bottom
*/
public void setLeftPadding(int left, int top, int right, int bottom) {
leftTextView.setPadding(left, top, right, bottom);
}
/**
* set right textview padding
*
* @param left
* @param top
* @param right
* @param bottom
*/
public void setRightPadding(int left, int top, int right, int bottom) {
rightTextView.setPadding(left, top, right, bottom);
}
/**
* set middle textview padding
*
* @param left
* @param top
* @param right
* @param bottom
*/
public void setMiddlePadding(int left, int top, int right, int bottom) {
middleTextView.setPadding(left, top, right, bottom);
}
/**
* set left TextView show text
*
* @param leftText
*/
public void setLeftText(String leftText) {
leftTextView.setText(leftText);
}
/**
* set left TextView textSize
*
* @param leftTextSize
*/
public void setLeftTextSize(float leftTextSize) {
leftTextView.setTextSize(leftTextSize);
}
/**
* set left TextView textColor
*
* @param leftTextColor
*/
public void setLeftTextColor(int leftTextColor) {
leftTextView.setTextColor(leftTextColor);
}
/**
* set left TextView background
*
* @param leftBg
*/
public void setLeftBg(Drawable leftBg) {
leftTextView.setBackground(leftBg);
}
/**
* set left TextView BackgroundResource
*
* @param leftBgResourceId
*/
public void setLeftBgResource(int leftBgResourceId) {
leftTextView.setBackgroundResource(leftBgResourceId);
}
/**
* set left TextView BackgroundColor
*
* @param leftBgColor
*/
public void setLeftBgColor(int leftBgColor) {
leftTextView.setBackgroundColor(leftBgColor);
}
/**
* set right TextView show text
*
* @param rightText
*/
public void setRightText(String rightText) {
rightTextView.setText(rightText);
}
/**
* set right TextView textSize
*
* @param rightTextSize
*/
public void setRightTextSize(float rightTextSize) {
rightTextView.setTextSize(rightTextSize);
}
/**
* set right TextView textColor
*
* @param rightTextColor
*/
public void setRightTextColor(int rightTextColor) {
rightTextView.setTextColor(rightTextColor);
}
/**
* set right TextView background
*
* @param rightBg
*/
public void setRightBg(Drawable rightBg) {
rightTextView.setBackground(rightBg);
}
/**
* set right TextView BackgroundResource
*
* @param rightBgResourceId
*/
public void setRightBgResource(int rightBgResourceId) {
rightTextView.setBackgroundResource(rightBgResourceId);
}
/**
* set right TextView BackgroundColor
*
* @param rightBgColor
*/
public void setRightBgColor(int rightBgColor) {
rightTextView.setBackgroundColor(rightBgColor);
}
/**
* set middle TextView show text
*
* @param middleText
*/
public void setMiddleText(String middleText) {
middleTextView.setText(middleText);
}
/**
* set middle TextView textSize
*
* @param middleTextSize
*/
public void setMiddleTextSize(float middleTextSize) {
middleTextView.setTextSize(middleTextSize);
}
/**
* set middle TextView textColor
*
* @param middleTextColor
*/
public void setMiddleTextColor(int middleTextColor) {
middleTextView.setTextColor(middleTextColor);
}
/**
* set middle TextView background
*
* @param middleBg
*/
public void setMiddleBg(Drawable middleBg) {
middleTextView.setBackground(middleBg);
}
/**
* set middle TextView BackgroundResource
*
* @param middleBgResourceId
*/
public void setMiddleBgResource(int middleBgResourceId) {
middleTextView.setBackgroundResource(middleBgResourceId);
}
/**
* set middle TextView BackgroundColor
*
* @param middleBgColor
*/
public void setMiddleBgColor(int middleBgColor) {
middleTextView.setBackgroundColor(middleBgColor);
}
}
leftTextView = new TextView(mContext);
設置位置和大小:
LayoutParams leftParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
leftTextView.setLayoutParams(leftParams);
獲取屬性的類型數組:
ypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.TitleView);
獲取設置的字符串文本內容:
typedArray.getString(R.styleable.TitleView_title_LeftText);
獲取文本的大小和間距(Padding,Margin):
typedArray.getDimension(R.styleable.TitleView_title_LeftSize, DEFAULT_TEXT_SIZE);
獲取設置的顏色,例如文本的顏色:
typedArray.getColor(R.styleable.TitleView_title_LeftColor, DEFAULT_TEXT_COLOR);
獲取設置的背景:
typedArray.getDrawable(R.styleable.TitleView_title_LeftBg);
獲取是否顯示:
typedArray.getInt(R.styleable.TitleView_title_MiddleVisibility, VISIBLE);
使用代碼設置自定義的屬性對應的值
就以左側TextView爲例
設置是否顯示:
public void setLeftVisibity(int visibity)
設置控件之間間距:
public void setLeftMargins(int left, int top, int right, int bottom)
設置內間距:
public void setLeftPadding(int left, int top, int right, int bottom)
設置文本內容:
public void setLeftText(String leftText)
設置文本大小:
public void setLeftTextSize(float leftTextSize)
設置文本顏色:
public void setLeftTextColor(int leftTextColor)
設置背景圖片:
public void setLeftBg(Drawable leftBg)
設置背景資源:
public void setLeftBgResource(int leftBgResourceId)
設置背景顏色:
public void setLeftBgColor(int leftBgColor)
注意點
1.如果在調用處設置了Padding,同時也設置了PaddingLeft,PaddingRight,PaddingTop,PaddingBottom,那麼以Padding爲準,如果只設置一個方向,那麼就不要設置Padding屬性
2.如果在調用處設置了Margin,同時也設置了MarginLeft,MarginRight,MarginTop,MarginBottom,那麼以Margin爲準,如果只設置一個方向,那麼就不要設置Padding屬性
從這個就可以看出:
if (middleMargin != DEFAULT_MARGIN) {
middleMarginLeft = middleMarginRight = middleMarginTop = middleMarginBottom = middleMargin;
}
if (middlePadding != DEFAULT_PADDING) {
middlePaddingLeft = middlePaddingRight = middlePaddingTop = middlePaddingBottom = middlePadding;
}
TitleView中三個TextView設置點擊事件:
setOnClickTitleViewListener(OnClickTitleViewListener onClickTitleViewListener)
public interface OnClickTitleViewListener {
public void onClickLeft();
public void onClickRight();
public void onClickMiddle();
}
public void setOnClickTitleViewListener(OnClickTitleViewListener onClickTitleViewListener) {
this.mOnClickTitleViewListener = onClickTitleViewListener;
}
private void setTitleListener() {
leftTextView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mOnClickTitleViewListener != null) {
mOnClickTitleViewListener.onClickLeft();
}
}
});
rightTextView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mOnClickTitleViewListener != null) {
mOnClickTitleViewListener.onClickRight();
}
}
});
middleTextView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mOnClickTitleViewListener != null) {
mOnClickTitleViewListener.onClickMiddle();
}
}
});
}
在調用處,如果設置點擊事件,那麼就要實現這個三個方法。onClickLeft(),onClickRight(),onClickMiddle()
使用步驟:
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:title="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.administrator.titleviewdemo.view.TitleView
android:layout_marginBottom="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
title:title_LeftText="left"
title:title_MiddleText="title"
title:title_RightText="right"
title:title_MiddleSize="20sp"
title:title_LeftSize="15sp"
title:title_LeftColor="@android:color/holo_red_dark"
title:title_RightColor="@android:color/holo_red_dark"
title:title_MiddleColor="@android:color/holo_green_dark"
android:background="@android:color/holo_blue_dark">
</com.example.administrator.titleviewdemo.view.TitleView>
<com.example.administrator.titleviewdemo.view.TitleView
android:layout_marginBottom="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
title:title_LeftText="left"
title:title_MiddleText="title"
title:title_MiddleSize="25sp"
title:title_LeftSize="20sp"
title:title_RightSize="10sp"
title:title_RightText="right"
title:title_LeftVisibility="GONE"
title:title_RightPaddingRight="20dp"
title:title_LeftColor="@android:color/holo_red_dark"
title:title_RightColor="@android:color/holo_red_dark"
title:title_MiddleColor="@android:color/holo_green_dark"
android:background="@android:color/holo_blue_dark">
</com.example.administrator.titleviewdemo.view.TitleView>
<com.example.administrator.titleviewdemo.view.TitleView
android:layout_marginBottom="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
title:title_LeftText="left"
title:title_MiddleText="title"
title:title_MiddleSize="30sp"
title:title_LeftSize="25sp"
title:title_RightSize="20sp"
title:title_RightText="right"
title:title_RightVisibility="GONE"
title:title_LeftPaddingLeft="20dp"
title:title_LeftColor="@android:color/holo_red_dark"
title:title_RightColor="@android:color/holo_red_dark"
title:title_MiddleColor="@android:color/holo_green_dark"
android:background="@android:color/holo_blue_dark">
</com.example.administrator.titleviewdemo.view.TitleView>
<com.example.administrator.titleviewdemo.view.TitleView
android:layout_marginBottom="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
title:title_LeftText="left"
title:title_MiddleText="title"
title:title_MiddleSize="35sp"
title:title_RightText="right"
title:title_MiddleVisibility="GONE"
title:title_LeftMargin="10dp"
title:title_RightMarginRight="10dp"
title:title_LeftColor="@android:color/holo_red_dark"
title:title_RightColor="@android:color/holo_red_dark"
title:title_MiddleColor="@android:color/holo_green_dark"
android:background="@android:color/holo_blue_dark">
</com.example.administrator.titleviewdemo.view.TitleView>
<com.example.administrator.titleviewdemo.view.TitleView
android:id="@+id/title_view"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_marginBottom="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
title:title_MiddleText="title"
title:title_MiddleSize="40sp"
title:title_MiddleColor="@android:color/black"
title:title_LeftBg="@drawable/left"
title:title_RightBg="@drawable/right"
android:background="@android:color/holo_blue_dark">
</com.example.administrator.titleviewdemo.view.TitleView>
<com.example.administrator.titleviewdemo.view.TitleView
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_marginBottom="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
title:title_MiddleText="title"
title:title_MiddleSize="45sp"
title:title_MiddleColor="@android:color/holo_green_dark"
title:title_LeftBg="@drawable/left"
title:title_RightBg="@drawable/right"
title:title_LeftVisibility="GONE"
android:background="@android:color/darker_gray">
</com.example.administrator.titleviewdemo.view.TitleView>
<com.example.administrator.titleviewdemo.view.TitleView
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_marginBottom="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
title:title_MiddleText="title"
title:title_MiddleSize="50sp"
title:title_MiddleColor="@android:color/holo_green_dark"
title:title_LeftBg="@drawable/left"
title:title_RightBg="@drawable/right"
title:title_RightVisibility="GONE"
android:background="@android:color/holo_blue_dark">
</com.example.administrator.titleviewdemo.view.TitleView>
<com.example.administrator.titleviewdemo.view.TitleView
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_marginBottom="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
title:title_MiddleText="title"
title:title_MiddleSize="55sp"
title:title_MiddleColor="@android:color/holo_green_dark"
title:title_LeftBg="@drawable/left"
title:title_RightBg="@drawable/right"
title:title_MiddleVisibility="GONE"
android:background="@android:color/darker_gray">
</com.example.administrator.titleviewdemo.view.TitleView>
</LinearLayout>
</ScrollView>
</LinearLayout>
在跟節點中要寫入xmlns:title="http://schemas.android.com/apk/res-auto",如果是在eclipse,res-auto要換成res/完整的應用包名
title是名字隨便命名,
<com.example.administrator.titleviewdemo.view.TitleView//完整的包名+類名
title:title_LeftText="left"
title:title_MiddleText="title"
title:title_RightText="right"
title:title_MiddleSize="20sp" >
</com.example.administrator.titleviewdemo.view.TitleView>
title:前綴 title_LeftText屬性
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TitleView titleView = (TitleView) findViewById(R.id.title_view);
//設置點擊事件
titleView.setOnClickTitleViewListener(new TitleView.OnClickTitleViewListener() {
@Override
public void onClickLeft() {
Toast.makeText(getApplicationContext(), "click-left", Toast.LENGTH_SHORT).show();
}
@Override
public void onClickRight() {
Toast.makeText(getApplicationContext(), "click-right", Toast.LENGTH_SHORT).show();
}
@Override
public void onClickMiddle() {
Toast.makeText(getApplicationContext(), "click-middle", Toast.LENGTH_SHORT).show();
}
});
//使用代碼設置中間TextView的間距
titleView.setMiddleMargins(0, 10, 0, 10);
}
}
源碼下載: http://download.csdn.net/detail/forwardyzk/8442549