android之ToolBar的使用、导航设置

参考:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2006.html

toolbar上的menu的使用:https://blog.csdn.net/yuzhongchun/article/details/8956256

memu的点击事件注意事项:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1120/2025.html

https://www.cnblogs.com/wolf-bing/p/3153836.html

为控件添加menu菜单:https://blog.csdn.net/qq_32175491/article/details/53763861

AppCompatActivity是自带actionbar,所以必须先去掉,修改设置activity的theme如下:

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

--------------toolBar.xml----------------

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar_too"
    android:layout_width="match_parent"
    android:layout_height="?actionBarSize"
    android:background="#3dd235"
    >

    <TextView
        android:id="@+id/title_too"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="首页"
        android:textColor="#ffffff"

        android:textSize="20dp"
      />


</android.support.v7.widget.Toolbar>

 

设置导航:

public class BaseActivity extends AppCompatActivity {
    private Toolbar toolbar;

    @SuppressLint("NewApi")
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public void initToolBar(String title,boolean isNav){

        toolbar= (Toolbar) findViewById(R.id.toolbar_too);

       if(toolbar!=null){
           if(isNav){
               toolbar.setNavigationIcon(R.mipmap.icon_goback_light);//设置toolBar的返回按钮图片

           }
           //返回按钮的点击事件
           toolbar.setNavigationOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                  finish();//结束当前activity,销毁

               }
           });

           TextView title_nav=(TextView)findViewById(R.id.title_too);
           title_nav.setText(title);//更改导航标题

       }

    }

}

 

public class MainActivity extends AppCompatActivity {

    @SuppressLint("RestrictedApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        toolbar.setTitle("aaaa");//主标题
toolbar.setSubtitle("bbb");//主标题正下方的附标题
toolbar.setLogo(R.drawable.ic_launcher_background);//logo
                setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);//这个是显示返回箭头
//toolbar.setNavigationIcon(R.mipmap.ic_launcher);//返回按钮图标
//toolbar.setOnMenuItemClickListener(onMenuItemLis);//将onMenuItemClick监听者设置给toolbar
        setHasOptionsMenu(true);//
        //添加左边图标点击事件
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.e("s","dd");
                finish();
            }
        });
    }

    private void setHasOptionsMenu(boolean b) {
Log.e("d","ss");
    }

 

沉浸式导航、隐藏导航栏https://www.jianshu.com/p/ce65dc7b0b56

Android应用中经常会有一些要求全屏显示、隐状态栏导航栏的需求。通过全屏沉浸式的处理可以让应用达到更好的显示效果。

   //隐藏状态栏。必须放在 setContentView(R.layout.activity_main)之前设置,设置了隐藏状态栏,toolBar就会上移,占用原来状态栏的位置。
//        requestWindowFeature(Window.FEATURE_NO_TITLE);
//        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.activity_main);

隐藏导航栏的话,先获取到toolBar,然后设置隐藏。

在布局的最外层设置 android:fitsSystemWindows="true",会在屏幕最上方预留出状态栏高度的padding,如果没有这个设置,toolBar会把状态栏的位置占据(如果没有toolBar,让view的一部分页面进入状态栏的位置,和状态栏层叠,状态栏在最上面,达到沉浸式的效果)由于fitsSystemWindows属性本质上是给当前控件设置了一个padding,所以我们设置到根布局的话,会导致状态栏是透明的,并且和窗口背景一样。我们经常设置在最上端的图片背景、Banner之类的,如果是Toolbar的,我们可以使用一层LinearLayout包裹,并把这个属性设置给LinearLayout,这样就可以避免Toolbar的内容下沉了

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:fitsSystemWindows="true"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        tools:title="我是Title"/>

</LinearLayout>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值