本文共 4429 字,大约阅读时间需要 14 分钟。
原文地址:http://blog.csdn.net/qianjfsjf/article/details/51960249
http://www.jianshu.com/p/ae0013a4f71a
http://www.jianshu.com/p/79604c3ddcae
ToolBar的使用可参考官网:
ActionBarActivity已经被弃用,推荐使用AppCompatActivity
md的主题有:
- @android:style/Theme.Material (dark version)
- @android:style/Theme.Material.Light (light version)
- @android:style/Theme.Material.Light.DarkActionBar
与之对应的Compat Theme:
- Theme.AppCompat
- Theme.AppCompat.Light
- Theme.AppCompat.Light.DarkActionBar
Compat Theme能够兼容5.0以下版本适用md主题
要使用md主题,Activity必须继承AppCompatActivity
添加依赖compile ‘com..support:appcompat-v7:23.2.1’
1、修改Style
1 2 3 4 5 6 1 2 3 4 5 6
修改为NoActionBar
这里要注意colorPrimary等属性,对应控制如下图:
这些属性能定制状态栏颜色等
2、布局xml
1 2 3 4 5 6 1 2 3 4 5 6
由于colorPrimary设置ActionBar的颜色,并不能设置ToolBar的颜色
所以这里手动设置background为@color/colorPrimary
3、java使用控件
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_main); toolbar.setTitle("标题"); setSupportActionBar(toolbar); } 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
setSupportActionBar() 方法设置toolbar为此Activity的App Bar;
当ToolBar被设置为App Bar,可通过getSupportActionBar()方法获取到一个的ActionBar对象,通过该对象引用可对ToolBar做更多操作;
更多方法请参考API
效果图:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
app:showAsAction属性设置是否在App Bar上显示一个按钮
app:showAsAction=”ifRoom” //显示在Bar上
app:showAsAction=”never” //不显示Bar上,在溢出菜单中显示
由于showAsAction属性是在支持包中定义的,所以需要添加命名空间:
xmlns:app="http://schemas.android.com/apk/res-auto" 1 1
方式一:
重写onCreateOptionsMenu(Menu menu)、onOptionsItemSelected(MenuItem item)
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_edit: Toast.makeText(MainActivity.this, "action_s", Toast.LENGTH_LONG).show(); break; case R.id.action_share: Toast.makeText(MainActivity.this, "action_share", Toast.LENGTH_LONG).show(); break; default: break; } return true; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
方式二:
重写onCreateOptionsMenu(Menu menu),通过toolbar.setOnMenuItemClickListener()监听
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_edit: Toast.makeText(MainActivity.this, "action_settings", Toast.LENGTH_LONG).show(); break; case R.id.action_share: Toast.makeText(MainActivity.this, "action_share", Toast.LENGTH_LONG).show(); break; default: break; } return true; } }); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
注意:需要將toolbar.setOnMenuItemClickListener()设定在 setSupportActionBar 之后才有作用(setNavigationIcon也需要放在 setSupportActionBar之后才会生效)
2、返回按钮Back
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_main); toolbar.setTitle("标题"); setSupportActionBar(toolbar); getSupportActionBar().setHomeButtonEnabled(true); //设置返回键可用 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 1 2 3 4 5 6 1 2 3 4 5 6
setHomeButtonEnabled(true) //设置返回键可用
setDisplayHomeAsUpEnabled(true) //设置返回键显示
重写onOptionsItemSelected()监听事件:
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; default: break; } return true; }
转载地址:https://blog.csdn.net/happy_love1990/article/details/76761407 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!