package com.diandi.demo.widget; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; import com.diandi.demo.R; /** * ******************************************************************************* * ********* Author : klob(kloblic@gmail.com) . * ********* Date : 2014-11-29 . * ********* Time : 11:46 . * ********* Project name : Diandi1.18 . * ********* Version : 1.0 * ********* Copyright @ 2014, klob, All Rights Reserved * ******************************************************************************* */ public class HeaderLayout extends LinearLayout { private LayoutInflater mInflater; private View mHeader; private LinearLayout mLayoutLeftContainer; private LinearLayout mLayoutRightContainer; private TextView mHtvSubTitle; private LinearLayout mLayoutRightImageButtonLayout; private ImageButton mRightImageButton; private onRightImageButtonClickListener mRightImageButtonClickListener; private LinearLayout mLayoutLeftImageButtonLayout; private ImageButton mLeftImageButton; private onLeftImageButtonClickListener mLeftImageButtonClickListener; public HeaderLayout(Context context) { super(context); init(context); } public HeaderLayout(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public void init(Context context) { mInflater = LayoutInflater.from(context); mHeader = mInflater.inflate(R.layout.common_header, null); addView(mHeader); initViews(); } public void initViews() { mLayoutLeftContainer = (LinearLayout) findViewByHeaderId(R.id.header_layout_leftview_container); // mLayoutMiddleContainer = (LinearLayout) // findViewByHeaderId(R.id.header_layout_middleview_container);中间部分添加搜索或者其他按钮时可打开 mLayoutRightContainer = (LinearLayout) findViewByHeaderId(R.id.header_layout_rightview_container); mHtvSubTitle = (TextView) findViewByHeaderId(R.id.header_htv_subtitle); } public View findViewByHeaderId(int id) { return mHeader.findViewById(id); } public void init(HeaderStyle hStyle) { switch (hStyle) { case DEFAULT_TITLE: defaultTitle(); break; case TITLE_LIFT_IMAGEBUTTON: defaultTitle(); titleLeftImageButton(); break; case TITLE_RIGHT_IMAGEBUTTON: defaultTitle(); titleRightImageButton(); break; case TITLE_DOUBLE_IMAGEBUTTON: defaultTitle(); titleLeftImageButton(); titleRightImageButton(); break; } } // 默认文字标题 private void defaultTitle() { mLayoutLeftContainer.removeAllViews(); mLayoutRightContainer.removeAllViews(); } // 左侧自定义按钮 private void titleLeftImageButton() { View mleftImageButtonView = mInflater.inflate( R.layout.common_header_button, null); mLayoutLeftContainer.addView(mleftImageButtonView); mLayoutLeftImageButtonLayout = (LinearLayout) mleftImageButtonView .findViewById(R.id.header_layout_imagebuttonlayout); mLeftImageButton = (ImageButton) mleftImageButtonView .findViewById(R.id.header_ib_imagebutton); mLayoutLeftImageButtonLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (mLeftImageButtonClickListener != null) { mLeftImageButtonClickListener.onClick(); } } }); } // 右侧自定义按钮 private void titleRightImageButton() { View mRightImageButtonView = mInflater.inflate( R.layout.common_header_rightbutton, null); mLayoutRightContainer.addView(mRightImageButtonView); mLayoutRightImageButtonLayout = (LinearLayout) mRightImageButtonView .findViewById(R.id.header_layout_imagebuttonlayout); mRightImageButton = (ImageButton) mRightImageButtonView .findViewById(R.id.header_ib_imagebutton); mLayoutRightImageButtonLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (mRightImageButtonClickListener != null) { mRightImageButtonClickListener.onClick(); } } }); } /** * 获取右边按钮 * * @param @return * @return Button * @throws * @Title: getRightImageButton * @Description: TODO */ public ImageButton getRightImageButton() { if (mRightImageButton != null) { return mRightImageButton; } return null; } public void setDefaultTitle(CharSequence title) { if (title != null) { mHtvSubTitle.setText(title); } else { mHtvSubTitle.setVisibility(View.GONE); } } public void setTitleAndRightButton(CharSequence title, int backid, String text, onRightImageButtonClickListener onRightImageButtonClickListener) { setDefaultTitle(title); mLayoutRightContainer.setVisibility(View.VISIBLE); if (mRightImageButton != null && backid > 0) { mRightImageButton.setImageResource(backid); setOnRightImageButtonClickListener(onRightImageButtonClickListener); } } public void setTitleAndRightImageButton(CharSequence title, int backid, onRightImageButtonClickListener onRightImageButtonClickListener) { setDefaultTitle(title); mLayoutRightContainer.setVisibility(View.VISIBLE); if (mRightImageButton != null && backid > 0) { mRightImageButton.setImageResource(backid); setOnRightImageButtonClickListener(onRightImageButtonClickListener); } } public void setTitleAndLeftImageButton(CharSequence title, int id, onLeftImageButtonClickListener listener) { setDefaultTitle(title); if (mLeftImageButton != null && id > 0) { mLeftImageButton.setImageResource(id); setOnLeftImageButtonClickListener(listener); } mLayoutRightContainer.setVisibility(View.INVISIBLE); } public void setOnRightImageButtonClickListener( onRightImageButtonClickListener listener) { mRightImageButtonClickListener = listener; } public void setOnLeftImageButtonClickListener( onLeftImageButtonClickListener listener) { mLeftImageButtonClickListener = listener; } public enum HeaderStyle {// 头部整体样式 DEFAULT_TITLE, TITLE_LIFT_IMAGEBUTTON, TITLE_RIGHT_IMAGEBUTTON, TITLE_DOUBLE_IMAGEBUTTON; } public interface onRightImageButtonClickListener { void onClick(); } public interface onLeftImageButtonClickListener { void onClick(); } }