频道栏目
首页 > 程序开发 > 移动开发 > 其他 > 正文
使用toolBar作为标题栏并使状态栏透明
2017-02-14 09:36:00         来源:meijing11的博客  
收藏   我要投稿

1.Toolbar是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件,是actionBar的升级版。相比actionBar,更加的灵活,可任意放置。在现在的app开发中有很多需要标题栏与状态栏背景色一致,所以我们需要对其适配。

那么我们来看看如何对标题栏进行适配?

1.在res目录下创建values,values-v19两个文件下,并同时创建style.xml以及dimens.xml两个文件

\

2.在values中的style.xml设置 TransparentBarStyle

values style.xml

 

 

values-v19 style.xml (一定要设置此属性:true )

 

 

3.在values中的dimens.xml设置

values dimens.xml

     0dp

 

values-v19 dimens.xml

 

25dp

 

4.创建一个toolbar_layout.xml的布局文件

 





 

5.创建一个baseActivity作为所有Activity的基类

 

package com.project.coordinatortablayout.toolbar.config;

import android.os.Build;
import android.os.Bundle;
import android.support.annotation.LayoutRes;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.LinearLayout;

import com.project.coordinatortablayout.R;
/**
 * 基类  使用toolbar作为标题栏,并使状态栏透明与标题栏的背景色一致
 */
public class BaseTransparentBarActivity extends AppCompatActivity {

    private LinearLayout  rootLayout;
    private Toolbar       mToolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.activity_base_transparent_bar);
        //初始化状态栏透明
        initTransparentBar();
        // 初始化toolbar
        initToolbar();
    }

    @Override
    public void setContentView(@LayoutRes int layoutResID) {
        setContentView(View.inflate(this,layoutResID,null));
    }

    @Override
    public void setContentView(View view) {
         rootLayout= (LinearLayout) findViewById(R.id.activity_base_transparent_bar);
        if(rootLayout!=null){
            rootLayout.addView(view,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
            initToolbar();
        }
    }

    /**
     * 初始化状态栏透明
     */
    private void initTransparentBar() {
        if(Build.VERSION.SDK_INT> Build.VERSION_CODES.KITKAT){
            WindowManager.LayoutParams params = getWindow().getAttributes();
            params.flags= (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS|params.flags);
        }
    }

    /**
     * 初始化toolbar
     */
    private void initToolbar() {
        mToolbar=(Toolbar)findViewById(R.id.toolbar);
        if(mToolbar!=null){
            setSupportActionBar(mToolbar);
            mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });
        }
    }


    /**
     * 获取toolbar
     * @return
     */
    public Toolbar getTooBar(){
           return   mToolbar;
    }


    /**
     * 显示toolbar
     */
    public   void showToolbar(){
          if(mToolbar!=null){
              mToolbar.setVisibility(View.VISIBLE);
          }
    }

    /**
     * 隐藏toolbar
     */
    public  void  hideToolbar(){
        if(mToolbar!=null){
            mToolbar.setVisibility(View.GONE);
        }
    }
}

 

布局文件activity_base_transparent_bar.xml

 



   

 

6.创建一个Activity继承基类

 

package com.project.coordinatortablayout.toolbar;

import android.os.Bundle;
import android.widget.TextView;

import com.project.coordinatortablayout.R;
import com.project.coordinatortablayout.toolbar.config.BaseTransparentBarActivity;

/**
 * 使用toolbar做为标题栏并使状态栏透明
 */
public class TransparentBarActivity extends BaseTransparentBarActivity {


    private TextView  tvData;
    private String    info="使用toolbar做为标题栏并使状态栏透明(注意:需要系统的标题栏去掉) \n"
                            +"步骤:\n"
                            +"1.在res下创建values values-v19两个文件夹,并在v19的的style文件中TransparentBarStyle中设置true 详情查看style文件  \n"
                            +"2.在values的dimens文件中设置0dp;在values-v19的dimens文件中设置25dp  \n"
                            +"3.创建一个toolbar_layout.xml布局文件并设置toolbar控件,设置paddingTop  \n"
                            +"4.创建BaseTransparentBarActivity.class做为activity的基类,并初始化toolbar以及状态栏,详情查看BaseTransparentBarActivity.class  \n"
                            +"5.创建一个TransparentBarActivity.class并继承BaseTransparentBarActivity \n"
                            +"6.在清单文件中的TransparentBarActivity.class设置  android:theme=\"@style/TransparentBarStyle,在此声明在activity中,当然你可以将此声明到application作为全局"
                            +"\n  运行";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_transparent_bar);
        tvData= (TextView) findViewById(R.id.tv_data);
        tvData.setText(info);

    }
}

 

布局文件

 



    

 

 

7.在清单文件中声明该activity并设置theme,当然你也可以将其设置为全局的,只要在Application中设置即可。

 

          android:theme="@style/TransparentBarStyle" /

 

效果图:

\

 

点击复制链接 与好友分享!回本站首页
相关TAG标签 toolBar
上一篇:关于安卓颜色选择器的实现
下一篇:ViewPager+Fragment组合的预加载和懒加载
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站