我有一个带有一些操作栏按钮的工具栏。我希望相机图标按钮不出现如果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(菜单)。