ToolBar详解

 

toolbar插入:

<android.support.v7.widget.Toolbar

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="?attr/colorPrimary"

app:popupTheme="@style/AppTheme.PopupOverlay" />

 

或者是:

<android.support.design.widget.AppBarLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:theme="@style/AppTheme.AppBarOverlay">

 

<android.support.v7.widget.Toolbar

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="?attr/colorPrimary"

app:popupTheme="@style/AppTheme.PopupOverlay" />

 

</android.support.design.widget.AppBarLayout>

 

style中的样式:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

 

 

报错:Failed to find style 'coordinatorLayoutStyle' in current theme

解决方式

1.在style的APPtheme中插入

<style name="AppTheme"> <item name="coordinatorLayoutStyle">@style/Widget.Design.CoordinatorLayout</item> </style>

 

2.将app:gradle

 

compileSdkVersion 28 targetSdkVersion 28

改成

compileSdkVersion 27 targetSdkVersion 27

implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support:design:27.1.1'

 

3.implementation 'com.android.support:appcompat-v7:28.0.0-alpha3' in build.gradle(module) change alpha 3 to alpha 1. sync and you should be good to go. I spent almost a day trying to figure this out. none of these answers worked for me. hope this helps

 

 

以上3种方法亲测可以解决。

 

 

Toolbar绑定

在activity继承AppCompatActivity父类的onCreate方法中 //不能继承Activity

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

setSupportActionBar(toolbar);

((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);

 

 

在Fragment中使用toolbar

在onCreate方法中 setHasOptionsMenu(true);

((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);

mToolbar.inflateMenu(R.menu.menu);

 

 

 

设置标题

toolbar.setTitle("title")

toolbar.setSubTitle("SubTitle")

 

menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

tools:context="com.example.alex233.toolbar.MainActivity">

<item

android:id="@+id/action_settings"

android:orderInCategory="100"

android:title="@string/action_settings"

app:showAsAction="never" />

</menu>

 

showAsAction是做什么用的?

showAsAction主要是针对菜单的显示起作用的,它有三个可选项

always:总是显示在界面上

never:不显示在界面上,只让出现在右边的三个点中

ifRoom:如果有位置才显示,不然就出现在右边的三个点中

 

android:orderInCategory="100" 设置优先级,值越大优先级越低 ,按钮就在越底下

 

绑定menu

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

 

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

//return true;

}

 

对于onOptionsItemSelected()方法来说 return super.onOptionsItemSelected(item) 对没有处理的事件,交给父类来处理 return true 表示处理完菜单项的事件,不需要将该事件继续传播

 

效果如下:

 

 

FloatingActionButton浮动按钮:不多介绍了,绑定就行

<android.support.design.widget.FloatingActionButton

android:id="@+id/fab"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="bottom|end"

android:layout_margin="@dimen/fab_margin"

app:srcCompat="@android:drawable/ic_dialog_email" />

 

 

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)

.setAction("Action", null).show();

}

});

 

效果如下:

 

 

toolbar中同样可以增加Button或者ImageButton

<android.support.design.widget.AppBarLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:theme="@style/AppTheme.AppBarOverlay">

 

<android.support.v7.widget.Toolbar

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="?attr/colorPrimary"

app:popupTheme="@style/AppTheme.PopupOverlay"

app:title="title">

<ImageButton

android:layout_gravity="right"

android:layout_marginRight="10dp"

android:background="@color/colorPrimary"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

app:srcCompat="@android:drawable/ic_dialog_email"/>

<Button

android:id="@+id/btnRight"

android:background="#00000000"

android:text="提交"

android:layout_gravity="right"

android:layout_marginRight="10dp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

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

</android.support.design.widget.AppBarLayout>

 

绑定:

Button btnRight = (Button) toolbar.findViewById(R.id.btnRight);

普通方式绑定也可以

 

效果如下:

 

 

 

 

toolbar设置返回按键

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

toolbar.setNavigationOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

finish();

}

});

 

效果如下

 

toolbar设置头像

app:navigationIcon="@drawable/icon"

点击事件

toolbar.setNavigationIcon(R.drawable.icon);

toolbar.setNavigationOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

finish();

}

});

注意icon大小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值