自定义标题栏

现在很多人用toolbar 来代替 标题栏, 不过还是有些公司设计的还是左中右那种标题,

初入android 

还是很多人对toolbar的使用不是很好。

自己封装了一个 标题栏

可以 带 返回 标题 右侧按钮的

 方便灵活

自学的android 不是很好。

代码附上

AppTitle

package com.dmcc.yingyu.application;

import android.content.Context;
import android.media.Image;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.dmcc.yingyu.R;

/**
 * 
 * 
 * 
 * 使用方法 init(标题类型APPtitleStyle) setTitle(各种类型)
 * 
 * 默认都有logo   如果设置返回按钮 就隐藏左侧logo
 * @Description
 * @author wushange
 * @ClassName AppTitle
 * @date 2015-11-23 上午10:19:00
 */
public class AppTitle extends LinearLayout {

	private LayoutInflater mInflater;
	private View mHeader;

	private ImageView mHeadLogo;
	// 标题
	private TextView mHeadTitle;
	// 右边文本
	private TextView mHeadRightText;
	// 左侧返回按钮
	private Button mback;
	// 右侧按钮
	private Button mRightBtn;

	public AppTitle(Context context) {
		super(context);
		init(context);
	}

	public AppTitle(Context context, AttributeSet attrs) {
		super(context, attrs);
		init(context);
	}

	public void init(Context context) {
		mInflater = LayoutInflater.from(context);
		mHeader = mInflater.inflate(R.layout.include_head, null);
		addView(mHeader);
		initViews();

	}

	public void setbackClisener(OnClickListener clickListener) {
		mback.setOnClickListener(clickListener);
	}
	public void setRightClisener(OnClickListener clickListener){
		mHeadRightText.setOnClickListener(clickListener);
	}

	public void initViews() {
		mback = (Button) findViewById(R.id.back_btn);
		mHeadLogo = (ImageView) findViewByHeaderId(R.id.include_head_logo);
		mRightBtn = (Button) findViewById(R.id.include_right_brn);
		mHeadTitle = (TextView) findViewByHeaderId(R.id.include_head_title);
		mHeadRightText = (TextView) findViewByHeaderId(R.id.include_head_right_btn);
	}

	public View findViewByHeaderId(int id) {
		return mHeader.findViewById(id);
	}

	public void init(AppTitleStyle style) {
		switch (style) {
		case DEFAULT_TITLE:
			defaultTitle();
			break;
		case BACK_TITLR:
			backTitle();
			break;
		case TITLE_RIGHT_TEXT:
			titleRightText();
			break;
		case BACK_TITLE_RIGHT:
			backTitleRight();
			break;

		}
	}

	/**
	 * 默认只有标题
	 */
	private void defaultTitle() {
		mHeadLogo.setVisibility(View.VISIBLE);
		mback.setVisibility(View.INVISIBLE);
		mHeadTitle.setVisibility(View.VISIBLE);
		mHeadRightText.setVisibility(View.INVISIBLE);
	}

	/**
	 * 添加默认标题内容
	 * 
	 * @param title
	 * @param subTitle
	 */
	public void setTitle(CharSequence title) {
		if (title != null) {
			mHeadTitle.setText(title);
		} else {
			mHeadTitle.setVisibility(View.INVISIBLE);
		}
	}

	/**
	 * 返回+标题
	 */
	private void backTitle() {
		mHeadLogo.setVisibility(View.GONE);
		mback.setVisibility(View.VISIBLE);
		mHeadTitle.setVisibility(View.VISIBLE);
		mHeadRightText.setVisibility(View.INVISIBLE);
	}

	/**
	 * 返回+标题
	 * 
	 * @param title
	 * @param subTitle
	 */
	public void setBackTitle(CharSequence title) {
		if (title != null) {
			mHeadTitle.setText(title);
		} else {
			mHeadTitle.setVisibility(View.INVISIBLE);
		}
	}

	/**
	 * 标题以及右边有文本内容
	 */
	private void titleRightText() {
		mHeadLogo.setVisibility(View.INVISIBLE);
		mback.setVisibility(View.INVISIBLE);
		mHeadTitle.setVisibility(View.VISIBLE);
		mHeadRightText.setVisibility(View.VISIBLE);
	}

	/**
	 * 添加标题以及右边文本内容
	 * 
	 * @param title
	 * @param subTitle
	 * @param rightText
	 */
	public void setTitleRightText(CharSequence title, CharSequence rightText) {
		setTitle(title);
		if (mHeadRightText != null && rightText != null) {
			mHeadRightText.setText(rightText);
		}
	}

	/**
	 * 返回按钮,标题,右侧按钮
	 */
	private void backTitleRight() {
		mHeadLogo.setVisibility(View.GONE);
		mback.setVisibility(View.VISIBLE);
		mHeadTitle.setVisibility(View.VISIBLE);
		mHeadRightText.setVisibility(View.VISIBLE);

	}

	/**
	 * 添加标题以及右边文本内容
	 * 
	 * @param title
	 * @param subTitle
	 * @param rightText
	 */
	public void setBackTitleRightText(CharSequence title, CharSequence rightText) {
		setTitle(title);
		if (mHeadRightText != null && rightText != null) {
			mHeadRightText.setText(rightText);
		}
	}

	/**
	 * @author wushange
	 * 
	 * @param BACK_TITLR
	 *            :带返回按钮和标题的标题栏
	 * @param DEFAULT_TITLE
	 *            :只有标题的标题栏
	 * @param TITLE_RIGHT_TEXT
	 *            :带标题和右侧按钮的标题栏
	 * @param BACK_TITLE_RIGHT
	 *            :返回按钮标题栏和右侧按钮都有的标题栏
	 */
	public enum AppTitleStyle {
		BACK_TITLR, DEFAULT_TITLE, TITLE_RIGHT_TEXT, BACK_TITLE_RIGHT;
	}

}
布局文件:include_head

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/title_style" >

    <include layout="@layout/include_back_button_layout" />

    <TextView
        android:id="@+id/include_head_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="标题"
        android:textColor="@color/white"
        android:textSize="20sp" />

    <ImageView
        android:id="@+id/include_head_logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:padding="8dp"
        android:src="@drawable/main_logo" />

    <TextView
        android:id="@+id/include_head_right_btn"
        android:layout_width="wrap_content"
        android:layout_height="55dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:padding="10dp"
        android:text="右侧按钮"
        android:textColor="@color/darkgrey"
        android:textSize="16sp"
        android:visibility="visible" />

    <Button
        android:id="@+id/include_right_brn"
        android:layout_width="wrap_content"
        android:layout_height="55dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:padding="10dp"
        android:text="右侧按钮"
        android:visibility="gone" />

</RelativeLayout>


需要个返回按钮,也是自己瞎封装了一个 ,用着方便

include_back_button_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <Button
        android:id="@+id/back_btn"
        style="@style/back_btn_style"
        android:drawableStart="@drawable/back" />

</LinearLayout>

使用方法

	appTitle.init(AppTitleStyle.BACK_TITLE_RIGHT);
		appTitle.setTitleRightText("发表", "发表");
		appTitle.setbackClisener(this);
		appTitle.setRightClisener(this);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值