Android 同样的标题

由于项目需求 要求某几个Activity统一标题栏

新建 main_head.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="horizontal" 
	android:id="@+id/main_linearlayout_head"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	android:gravity="center_vertical"
	>
          
        <Button
            android:id="@+id/btn_left"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="上一步"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/tv_title"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="标题"
            android:textSize="18sp" />

        <Button
            android:id="@+id/btn_right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="下一步"
            android:textSize="18sp" />
            
</LinearLayout>

接下来建立base_main.xml 用来载入上面建立的 main_head.xml 如项目有多个不同 title bar 只需更换 include

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    android:orientation="vertical" >

    <include
        android:id="@+id/bottom"
        layout="@layout/main_header" />

    <LinearLayout
        android:id="@+id/content"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/bottom"
        android:orientation="horizontal" >



    </LinearLayout>

</RelativeLayout>

目前 视图需要建立的activity已经完成 我们建立一个BaseActivity 来管理

package com.minitalk.adapter;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

import com.minitalk.avtivity.R;

import framework.utils.AppManager;

/**
 * 继承于Activity用于以后方便管理
 *
 * @author coder
 */
public abstract class BaseActivity extends Activity {
    // 固定的菜单栏button
    private Button BackButton;
    private TextView Title;
    private Button NextButton;

    //所填从内容的布局
    private LinearLayout ly_content;

    // 内容区域的布局
    private View contentView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.base_main);
        ly_content = (LinearLayout) findViewById(R.id.content);

        BackButton = (Button) findViewById(R.id.btn_left);
        Title = (TextView) findViewById(R.id.tv_title);
        NextButton = (Button) findViewById(R.id.btn_right);

    }

    /**
     * 得到View的 内容
     *
     * @return
     */
    public View getLyContentView() {
        return contentView;
    }
    /**
     * 设置内容区域
     *
     * @param view View对象
     */
    public void setContentLayout(View view) {
        if (null != ly_content) {
            ly_content.addView(view);
        }
    }

    /**
     * 设置内容区域
     *
     * @param resId 资源文件ID
     */
    public View setContentLayout(int resId) {
        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        contentView = inflater.inflate(resId, null);

        LayoutParams layoutParams = new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.MATCH_PARENT);

        contentView.setLayoutParams(layoutParams);
        if (null != ly_content) {

            ly_content.addView(contentView);
            // 添加Activity到堆栈
            AppManager.getAppManager().addActivity(this);
            Log.v("AppManager",
                    "AppManager 添加actiivty!!" + this.getLocalClassName());
        }
        return contentView;
    }
    
    /**
     * 用来管理点击事件
    * */
    protected abstract void leftbnt();
    protected abstract void rightbnt();
    
    public void leftbnt(View view) {
        leftbnt();
    }

    public void rightbnt(View view) {
        rightbnt();
    }
    /**
     * 设置右上角的button消失
     */
    public void setnextgone() {
        NextButton.setVisibility(View.INVISIBLE);
    }
    /**
     * 设置标题
     */
    public void settitle(String title) {
        Title.setText(title);
    }




}

用于管理 activityStacks

package com.example.zh_title;


import java.util.Stack;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;

public class AppManager {
    public static Activity context = null;

    private static Stack<Activity> activityStack;
    private static AppManager instance;

    private AppManager() {
    }

    /**
     * 单一实例
     */
    public static AppManager getAppManager() {
        if (instance == null) {
            instance = new AppManager();
        }
        return instance;
    }

    /**
     * 添加Activity到堆栈
     */
    public void addActivity(Activity activity) {
        if (activityStack == null) {
            activityStack = new Stack<Activity>();
        }
        activityStack.add(activity);
    }

    /**
     * 获取当前Activity(堆栈中最后一个压入的)
     */
    public Activity currentActivity() {
        Activity activity = activityStack.lastElement();
        return activity;
    }

    /**
     * 结束当前Activity(堆栈中最后一个压入的)
     */
    public void finishActivity() {
        Activity activity = activityStack.lastElement();
        finishActivity(activity);
    }

    /**
     * 结束指定的Activity
     */
    public void finishActivity(Activity activity) {
        if (activity != null) {
            activityStack.remove(activity);
            activity.finish();
            activity = null;
        }
    }

    /**
     * 结束指定类名的Activity
     */
    public void finishActivity(Class<?> cls) {
        for (Activity activity : activityStack) {
            if (activity.getClass().equals(cls)) {
                finishActivity(activity);
            }
        }
    }

    /**
     * 结束所有Activity
     */
    public void finishAllActivity() {
        for (int i = 0, size = activityStack.size(); i < size; i++) {
            if (null != activityStack.get(i)) {
                activityStack.get(i).finish();
            }
        }
        activityStack.clear();
    }

    /**
     * 退出应用程序
     */
    public void AppExit(Context context) {
        try {
            finishAllActivity();
            ActivityManager activityMgr = (ActivityManager) context
                    .getSystemService(Context.ACTIVITY_SERVICE);
            activityMgr.restartPackage(context.getPackageName());
            System.exit(0);
        } catch (Exception e) {
        }
    }
}
Table of Contents