为了账号安全,请及时绑定邮箱和手机立即绑定

Android操作栏选项菜单项自定义可选背景

Android操作栏选项菜单项自定义可选背景

慕妹3242003 2023-06-08 20:07:53
我正在尝试将默认的 android 操作栏与自定义视图一起使用:<style name="ActionBar" parent="android:Widget.Material.ActionBar.Solid">    <item name="android:displayOptions">showCustom</item>    <item name="android:customNavigationLayout">@layout/customNavigationLayout</item></style>选项菜单包含一个应始终显示文本的项目:<item    android:id="@+id/action_cancel"    android:showAsAction="always|withText"    android:title="@string/action_cancel" />现在我遇到了可选背景的问题,它仍然是一个动作图标的大小:如何设置操作栏以应用可选背景来填充整个项目框?
查看完整描述

3 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

您可以尝试android:actionBarItemBackground在 中设置属性styles,如下所示:


<style name="AppTheme" parent="android:Theme.Material">

    ...

    <item name="android:actionBarItemBackground">?android:selectableItemBackground</item>

</style>


查看完整回答
反对 回复 2023-06-08
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

使用以下解决方案之一:


解决方案 1:


添加<item name="actionButtonStyle">@style/ActionButtonStyle</item>到您的基本应用程序主题,例如:


<style name="ActionButtonStyle" parent="android:Widget.Material.Button">

            <item name="android:textColor">@android:color/black</item>

            <item name="android:textSize">16sp</item>

            <item name="android:background">@drawable/button_background</item>

</style>


按钮背景


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

    <item android:state_pressed="true"

            android:drawable="@color/colorAccent"/>

    <item android:state_focused="true"

            android:drawable="@color/colorPrimaryDark"/>

    <item android:drawable="@color/colorPrimary"/>

</selector>

解决方案 2:


用于menuItem.setActionView将自定义布局应用于您的菜单项,如下所示:


layout_action_cancel(自定义菜单项布局):


<Button

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

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Cancel"

        android:id="@+id/b_action_cancel"

        android:gravity="center"

        android:background="@drawable/button_background">

</Button>

然后在您的 onCreateOptionsMenu 中将自定义布局应用于菜单项:


@Override

    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater menuInflater = getMenuInflater();

        menuInflater.inflate(R.menu.menu, menu);

        LayoutInflater layoutInflater = getLayoutInflater();

        View layout = layoutInflater.inflate(R.layout.layout_action_cancel, null, false);

        menu.getItem(0).setActionView(layout);

        return super.onCreateOptionsMenu(menu);

    }

并在 onPrepareOptionsMenu 中设置一个 OnClick 侦听器(替换 onOptionsItemSelected)


@Override

    public boolean onPrepareOptionsMenu(Menu menu) {

        View layout = menu.getItem(0).getActionView();

        if(layout instanceof Button){

            Button b_action_cancel = layout.findViewById(R.id.b_action_cancel);

            b_action_cancel.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View view) {

                    //your code

                }

            });

        }

        return super.onPrepareOptionsMenu(menu);

    }


查看完整回答
反对 回复 2023-06-08
?
慕容708150

TA贡献1831条经验 获得超4个赞

您可以尝试在菜单项属性中应用具有选定状态和正常状态的可绘制对象:


<item

    android:id="@+id/action_cancel"

    android:showAsAction="always|withText"

    android:title="@string/action_cancel" 

    android:icon="@drawable/mybuttonbackground" />


查看完整回答
反对 回复 2023-06-08
  • 3 回答
  • 0 关注
  • 363 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信