Android自定义标题栏的实现,及屏蔽系统标题栏

关于自定义标题栏,已经有很多前辈有很多成熟的解决方法。作为初入此行的我也是经过无数次的尝试和学习,得出了一下的心得感悟,希望可以帮助到还在这条道上摸索前行的童鞋们。

要使用自定用标题栏,首先得屏蔽系统的标题栏,在这儿我提供两种屏蔽系统标题栏的方法:

1、在代码中,

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		<span style="background-color: rgb(51, 255, 51);">requestWindowFeature(Window.FEATURE_NO_TITLE);//记住一定要放在setContentView()前面
</span>		setContentView(R.layout.activity_main);
	}		
2、在文件清单中,这样可以将整个应用设置成无标题栏的状态

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        <span style="background-color: rgb(51, 255, 51);">android:theme="@android:style/Theme.NoTitleBar" </span> >
去掉系统的标题栏之后,先自定义一个TitleBar让其继承RelativeLayout

package com.zyd.titlebar.custom;

import com.zyd.titlebar.R;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
@SuppressLint("NewApi")
public class TitleBar extends RelativeLayout {
	
	private TextView leftTv,titleTv,rightTv;
	private View titleView;
	private String titleText,leftText,rightText;
	private int titleTxtColor,leftTxtColor,rightTxtColor;
	private Drawable leftBG,rightBG;
	
	private TitleBarClickListener titleBarClickListener;

	public TitleBar(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
		TypedArray array=context.obtainStyledAttributes(attrs, R.styleable.title_bar);
		
		titleText=array.getString(R.styleable.title_bar_title_text);
		leftText=array.getString(R.styleable.title_bar_left_text);
		rightText=array.getString(R.styleable.title_bar_right_text);
		
		titleTxtColor=array.getColor(R.styleable.title_bar_title_text_color, 0);
		leftTxtColor=array.getColor(R.styleable.title_bar_left_text_color, 0);
		rightTxtColor=array.getColor(R.styleable.title_bar_right_text_color, 0);
		
		leftBG=array.getDrawable(R.styleable.title_bar_left_background);
		rightBG=array.getDrawable(R.styleable.title_bar_right_background);
		
		titleView=inflate(context, R.layout.title_bar, null);
		leftTv=(TextView) titleView.findViewById(R.id.left_tv);
		rightTv=(TextView) titleView.findViewById(R.id.right_tv);
		titleTv=(TextView) titleView.findViewById(R.id.title_tv);
		
		leftTv.setText(leftText);
		leftTv.setTextColor(leftTxtColor);
		leftTv.setBackground(leftBG);
		
		rightTv.setText(rightText);
		rightTv.setTextColor(rightTxtColor);
		rightTv.setBackground(rightBG);
		
		titleTv.setText(titleText);
		titleTv.setTextColor(titleTxtColor);
		
		addView(titleView);
		
		leftTv.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if (titleBarClickListener!=null) {
					titleBarClickListener.leftClick();
				}
			}
		});
		
		rightTv.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if (titleBarClickListener!=null) {
					titleBarClickListener.rightClick();
				}
			}
		});
	}
	
	public void setTopBarClickListener(TitleBarClickListener titleBarClickListener){
		this.titleBarClickListener=titleBarClickListener;
	}
	
	

	public String getTitleText() {
		return titleText;
	}

	public void setTitleText(String titleText) {
		this.titleText = titleText;
		titleTv.setText(titleText);
	}

	public String getLeftText() {
		return leftText;
	}

	public void setLeftText(String leftText) {
		this.leftText = leftText;
		leftTv.setText(leftText);
	}

	public String getRightText() {
		return rightText;
	}

	public void setRightText(String rightText) {
		this.rightText = rightText;
		rightTv.setText(rightText);
	}

	

	public int getTitleTxtColor() {
		return titleTxtColor;
	}

	public void setTitleTxtColor(int titleTxtColor) {
		this.titleTxtColor = titleTxtColor;
		titleTv.setTextColor(titleTxtColor);
	}

	public int getLeftTxtColor() {
		return leftTxtColor;
	}

	public void setLeftTxtColor(int leftTxtColor) {
		this.leftTxtColor = leftTxtColor;
		leftTv.setTextColor(leftTxtColor);
	}

	public int getRightTxtColor() {
		return rightTxtColor;
	}

	public void setRightTxtColor(int rightTxtColor) {
		this.rightTxtColor = rightTxtColor;
		rightTv.setTextColor(rightTxtColor);
	}

	

	public Drawable getLeftBG() {
		return leftBG;
	}

	public void setLeftBG(Drawable leftBG) {
		this.leftBG = leftBG;
		leftTv.setBackground(leftBG);
	}

	public Drawable getRightBG() {
		return rightBG;
	}

	public void setRightBG(Drawable rightBG) {
		this.rightBG = rightBG;
		rightTv.setBackground(rightBG);
	}



	public interface TitleBarClickListener{
		void leftClick();
		
		void rightClick();
	}
}

再在布局文件里实现布局,title_bar.xml

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="100px" >
		
        <TextView
            android:id="@+id/left_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/title_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/right_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="10dp"
            android:textSize="18sp" />

    </RelativeLayout>

</LinearLayout>
这样标题栏的自定义布局就实现了,要想使用可以直接使用这个自定义布局。

有需要源码的,请点击源码下载


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值