ActionMode去掉返回箭头

来源:互联网 发布:大数据用什么语言最好 编辑:程序博客网 时间:2024/05/16 07:20

Android定制ActionMode模式,要去掉最左边返回箭头,源代码中没有提供接口,看了下源码,找到下面实现方法:

首先,设置Activity主题,修改如下:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">    <!-- Customize your theme here. -->    <item name="actionModeCloseButtonStyle">@style/ActionModeNoBack</item></style>
<style name="ActionModeNoBack" parent="Base.Widget.AppCompat.ActionButton.CloseMode">    <item name="android:visibility">gone</item></style>
这个设置只能把左边按钮隐藏,并不能完全去掉原因请看ActionBarContextView.java onLayout onMeasure方法
接下来是自定义View的处理:
public class CustomTextView extends AppCompatTextView {    public CustomTextView(Context context) {        super(context);    }    public CustomTextView(Context context, @Nullable AttributeSet attrs) {        super(context, attrs);    }    public CustomTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int mode = MeasureSpec.getMode(widthMeasureSpec);        int width = MeasureSpec.getSize(widthMeasureSpec);        int customWidthMeasureSpec = widthMeasureSpec;        if (getParent() instanceof ActionBarContextView) {            View closeLayout = ((ActionBarContextView) getParent()).findViewById(R.id.action_mode_close_button);            if (null != closeLayout) {
                customWidthMeasureSpec = MeasureSpec.makeMeasureSpec(closeLayout.getMeasuredWidth() + width, mode);            }        }               super.onMeasure(customWidthMeasureSpec, heightMeasureSpec);    }}

以上处理可以达到自定义ActionMode,而且不影响Menu处理。

原创粉丝点击