微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 ActionBar 按钮可见性设置为 GONE

如何解决将 ActionBar 按钮可见性设置为 GONE

我有一个带有一些操作栏按钮的工具栏。我希望相机图标按钮不出现,如果 Build.VERSION.SDK_INT

在以下菜单文件中,我定义了操作栏按钮:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>

<item
    android:id="@+id/addons"
    android:icon="@drawable/ic_add_Box_black_24dp"
    android:title="camera"
    app:showAsAction="always"/>


<item
    android:id="@+id/hellosearch"
    android:icon="@drawable/ic_search_black_24dp"
    android:title="camera"
    app:showAsAction="always"/>

//在 MainActivity 里面我重写了这个方法

@Override
public boolean onoptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

        case R.id.addons:
            //we are requesting to purchase something:
            Log.d("billing009","trying to start a purchase!! user has accesss(subs): "+user_has_autorenew_subs+
                    " didFind :: " + didFindTotalAccess);

          showPurchaseDialog(styled_title);
            //inHouseMethod_StartPurchase();
            break;

        case R.id.hellosearch:
            mDrawer.openDrawer(GravityCompat.START);
            return true;

但是,当用户单击操作栏按钮之一时,会调用方法

如何使用在 onCreate: 中创建的工具栏对象来获取相机图标(ActionBar 按钮),以便在 Build.VERSION.SDK_INT

//inside onCreate
toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar); 

解决方法

你可以在 onCreateOptionsMenu 中这样做

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.your_menu_xml,menu);
        if(Build.VERSION.SDK_INT < 21) {
           MenuItem item = menu.findItem(R.id.idOfYourMenuItem);
           item.setVisible(false);
        }
        return true;
    }
,

将此方法放在您的活动中

public boolean onPrepareOptionsMenu(Menu menu)
{
    MenuItem camera = menu.findItem(R.id.addons);      
    if(Build.VERSION.SDK_INT < 21) 
    {           
        camera.setVisible(true);
    }
    else
    {
        camera.setVisible(false);
    }
    return true;
}

onPrepareOptionsMenu 准备要显示的屏幕的标准选项菜单。这在菜单显示之前调用,每次显示。您可以使用此方法有效地启用/禁用项目或以其他方式动态修改内容。

onCreateOptionsMenu() 被调用一次。
每次打开菜单时都会调用 onPrepareOptionsMenu()

来自 onCreateOptionsMenu() 文档:

这个只调用一次,第一次选项菜单是 显示。要在每次显示时更新菜单,请参阅 onPrepareOptionsMenu(Menu)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。