Android Toolbar使用ActionMode

来源:互联网 发布:matlab矩阵中有未知数 编辑:程序博客网 时间:2024/05/20 04:12

目录(?)[+]

Toolbar使用ActionMode

  • Toolbar使用ActionMode
    • 基本情况
    • 设置Style
    • Java
    • 总结
    • 谢谢

基本情况

ActionMode 其实是一种菜单方式,从Android3.0之后出现,可以通过AppCompat兼容老版本。

Android5.0之后的MD设计,使用了Toolbar代替了ActionBar,如何在使用Toolbar的时候,能够适配ActionMode

Toolbar适配ActionMode


设置Style

<style name="AppTheme" parent="AppTheme.Parent">    <!-- Customize theme here. --></style><style name="AppTheme.Parent" parent="Theme.AppCompat">    <item name="windowActionModeOverlay">true</item>    <item name="windowActionBarOverlay">true</item>    <item name="windowNoTitle">true</item>    <item name="windowActionBar">false</item></style>

以上的 <item name="windowActionModeOverlay">true</item> 其实是为了能够让ActionMode能够覆盖我们的Toolbar,否则会出现ActionMode将Toolbar顶下去的样子(重复出现)

ActionMode和Toolbar重复出现

当然,也有可能出现ActionMode和Toolbar的颜色不同,或者高度不一致的问题

颜色和高度不一致

再次修改style,最终的 style.xml:

<style name="AppTheme" parent="AppTheme.Parent">    <!-- Customize theme here. -->    <item name="actionModeStyle">@style/CustomActionMode</item></style><style name="AppTheme.Parent" parent="Theme.AppCompat">    <item name="windowActionModeOverlay">true</item>    <item name="windowActionBarOverlay">true</item>    <item name="windowNoTitle">true</item>    <item name="windowActionBar">false</item></style><style name="CustomActionMode" parent="@style/Widget.AppCompat.ActionMode">    <item name="background">@color/primary_color</item>    <item name="height">64dp</item></style>


Java

注意:

  • ActionMode.Callback 接口使用android.support.v7.view.ActionMode 而不是android.view.ActionMode

    其实Toolbar适配ActionMode最重要的是:设置正确的style,对于有自己的设计需求,修改CustomActionMode便可。


    转自:http://blog.csdn.net/u012336923/article/details/50865120
  • Activity需要继承AppCompatActivity
  • 通过startSupportActionMode启动ActionMode而不是startActionMode

private ActionMode.Callback mCallback = new ActionMode.Callback() {        @Override        public boolean onCreateActionMode(ActionMode mode, Menu menu) {            mode.setTitle("This is Title");            mode.setSubtitle("This is SubTitle");            getMenuInflater().inflate(R.menu.menu_item_callback, menu);            return true;        }        @Override        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {            return false;        }        @Override        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {            return false;        }        @Override        public void onDestroyActionMode(ActionMode mode) {        }};...startSupportActionMode(mCallback);


总结

其实Toolbar适配ActionMode最重要的是:设置正确的style,对于有自己的设计需求,修改CustomActionMode便可。


转自:http://blog.csdn.net/u012336923/article/details/50865120


谢谢

0 0
原创粉丝点击