ToolBar的使用
发布日期:2021-11-12 07:57:33 浏览次数:20 分类:技术文章

本文共 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

ToolBar的使用

添加依赖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 
效果图: 
这里写图片描述


ToolBar高级用法与定制

1、添加菜单Menu

定义Menu—xml

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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android 异常容错处理
下一篇:Android:控件AutoCompleteTextView 自动提示

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月12日 18时04分50秒