设置ActionBar按钮可见性为GONE



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

在下面的菜单文件中我定义了动作栏按钮:

<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按钮)的控制,所以我可以设置它的可见性为GONE,如果Build.VERSION。SDK_INT & lt;21 ?

//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;
}

把这个方法放到Activity中

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(菜单)。

最新更新