Android中title的管理

來源:互聯網
上載者:User

標籤:

常見的Android應用每個Activity或者Fragment都會帶有一個Title欄。最普通的就是每個Activity的布局檔案中都寫一個title。但是這樣管理起來比較麻煩,因為每個activity的title欄其實看起來都差不多,基本都包含有返回功能,一個textview描述當前頁面,最右側會是一個更多或者搜尋之類的功能按鈕。這樣我們其實可以使用一個通用的布局,在所有的activity的父類中直接控制title的樣式。

1.首先是BaseActivity作為所有Activity的父類

public abstract class BaseActivity extends Activity  {    public LayoutInflater inflater;    public Resources mResources;    public Context mContext;    public View rootView;    private View titleView;    private LinearLayout.LayoutParams params;    public int layoutId;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        inflater = getLayoutInflater();        layoutId = getContentView();        rootView = inflater.inflate(layoutId, null);        mContext = this;        mResources = mContext.getResources();        params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) mResources.getDimension(R.dimen.common_title_height));        setContentView(rootView);        findViewById();        initTitleView();        initData();    }    private void initTitleView() {        titleView = TitleManager.getInstance(this).initTitleView(layoutId);        ((ViewGroup) rootView).addView(titleView, 0, params);    }    /**     * 繫結控制項id     */    protected abstract void findViewById();    protected abstract void initData();    /**     * 初始化控制項     */    protected abstract int getContentView();}



2.接著是titlemanager類
public class TitleManager implements View.OnClickListener {    private static TitleManager uniqueInstance = null;    private Activity context;    private View titleView;    private LayoutInflater inflater;    private TitleManager(Activity context) {        this.context = context;        inflater = context.getLayoutInflater();    }    public static TitleManager getInstance(Activity context) {        if (uniqueInstance == null) {            uniqueInstance = new TitleManager(context);        }        return uniqueInstance;    }    public ImageView mCommonTitleLeft;    public TextView mCityNameTextView;    public TextView mTitleTextView;    public ImageView mSearch;    public ImageView mFavorite;    public ImageView mShare;    public View initTitleView(int layoutId) {        titleView = inflater.inflate(R.layout.view_product_common_title, null);        mCommonTitleLeft = (ImageView) titleView.findViewById(R.id.common_title_left);        mCommonTitleLeft.setOnClickListener(this);        mCityNameTextView = (TextView) titleView.findViewById(R.id.activity_product_home_left);        mCityNameTextView.setOnClickListener(this);        mTitleTextView = (TextView) titleView.findViewById(R.id.common_title_center);        mSearch = (ImageView) titleView.findViewById(R.id.common_title_search);        mSearch.setOnClickListener(this);        mFavorite = (ImageView) titleView.findViewById(R.id.details_product_favorite_img);        mFavorite.setOnClickListener(this);        mShare = (ImageView) titleView.findViewById(R.id.details_product_shear_img);        mShare.setOnClickListener(this);        switch (layoutId) {            case R.layout.main:                mCityNameTextView.setVisibility(View.VISIBLE);                mSearch.setVisibility(View.VISIBLE);                mTitleTextView.setText(R.string.title_activity_main);                break;            case R.layout.main1:                mCommonTitleLeft.setVisibility(View.VISIBLE);                mTitleTextView.setText(R.string.title_activity_main1);                break;            case R.layout.main2:                mCommonTitleLeft.setVisibility(View.VISIBLE);                mFavorite.setVisibility(View.VISIBLE);                mTitleTextView.setText(R.string.title_activity_main2);                break;            case R.layout.main3:                mCommonTitleLeft.setVisibility(View.VISIBLE);                mShare.setVisibility(View.VISIBLE);                mTitleTextView.setText(R.string.title_activity_main3);                break;            default:                mCityNameTextView.setVisibility(View.GONE);                mSearch.setVisibility(View.GONE);                mCommonTitleLeft.setVisibility(View.VISIBLE);                mFavorite.setVisibility(View.GONE);                mShare.setVisibility(View.GONE);                break;        }        return titleView;    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.common_title_left:                context.finish();                break;            case R.id.common_title_search:                Toast.makeText(context, "search", Toast.LENGTH_SHORT).show();                break;        }    }}



3.Activity和xml布局檔案就不給了,在後面直接放上demo,裡麵包含的整個工程。

效果基本是這樣的:

:http://www.oschina.net/action/code/download?code=45216&id=63735

Android中title的管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.