Reputation: 37
I'am creating simple app with toolbar as a menu. Unfortunately icons don't show and i ask you for help. Probably problem is in styles.xml. And yes I've checked lots of similar questions and still in trouble. Maybe toolbar conflicts with ActionBar. Not sure. Here is my code: menu xml file:
<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_create"
android:icon="@drawable/baseline_add_24"
android:showAsAction="always"
android:title="Создать"
android:orderInCategory="1"/>
<item
android:id="@+id/menu_edit"
android:icon="@drawable/baseline_create_24"
android:showAsAction="always"
android:title="Редактировать"
android:orderInCategory="2"/>
<item
android:id="@+id/menu_delete"
android:showAsAction="always"
android:icon="@drawable/baseline_delete_sweep_24"
android:title="Удалить"
android:orderInCategory="3"/>
<item android:id="@+id/menu_save"
android:showAsAction="ifRoom"
android:title="Сохранить"
android:orderInCategory="4"/>
<item android:id="@+id/menu_cancel"
android:showAsAction="ifRoom"
android:title="Отмена"
android:orderInCategory="5"/>
</menu>
MainActivity.cs It isn't full because all actions on toolbar are doing in OnCreate.
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Support.Design.Widget;
using Android.Support.V7.App;
using Android.Views;
using Android.Widget;
using Android.Support.V7.Widget;
using OrgDatabase1;
using Android.Database;
using Toolbar = Android.Support.V7.Widget.Toolbar;
using DatabaseService;
using Android.Util;
namespace FinallyApp
{
[Activity(MainLauncher = true)]
public class MainActivity : AppCompatActivity, BottomNavigationView.IOnNavigationItemSelectedListener
{
TextView textMessage;
BottomNavigationView navigation;
ICursor cursor;
RecyclerView mRecyclerView;
RecyclerView.LayoutManager mLayoutManager;
NoteAlbumAdapter mAdapter;
Toolbar toolbar;
int current_section;
DBConnectionServiceConnection Dbconnection;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Xamarin.Essentials.Platform.Init(this, bundle);
SetContentView(Resource.Layout.activity_main);
textMessage = FindViewById<TextView>(Resource.Id.message);
navigation = FindViewById<BottomNavigationView>(Resource.Id.navigation);
navigation.SetOnNavigationItemSelectedListener(this);
mRecyclerView = FindViewById<RecyclerView>(Resource.Id.recyclerView);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.SetLayoutManager(mLayoutManager);
StartService(new Intent(this, typeof(DBConnectService)));
toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
SetSupportActionBar(toolbar);
SetTitle(Resource.String.title_note);
toolbar.SetBackgroundResource(Resource.Color.NoteMainColor);
}
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.top_menus, menu);
var delete_item = menu.FindItem(Resource.Id.menu_delete);
delete_item.SetVisible(false);
var edit_item = menu.FindItem(Resource.Id.menu_edit);
edit_item.SetVisible(false);
var save_item = menu.FindItem(Resource.Id.menu_save);
save_item.SetVisible(false);
var cancel_item = menu.FindItem(Resource.Id.menu_cancel);
cancel_item.SetVisible(false);
return base.OnCreateOptionsMenu(menu);
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.menu_create:
current_section = navigation.SelectedItemId;
switch (current_section)
{
case Resource.Id.navigation_note:
var intent = new Intent(this, typeof(CreationActivity));
intent.PutExtra("CreationType", "Note");
StartActivity(intent);
return true;
case Resource.Id.navigation_todo:
var intent2 = new Intent(this, typeof(CreationActivity));
intent2.PutExtra("CreationType", "Todo");
StartActivity(intent2);
return true;
case Resource.Id.navigation_event:
var intent3 = new Intent(this, typeof(CreationActivity));
intent3.PutExtra("CreationType", "Event");
StartActivity(intent3);
return true;
}
return true;
}
return base.OnOptionsItemSelected(item);
}
}
}
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="colorAccent">@color/colorAccent</item><item name="android:colorButtonNormal">#ff84ffff</item>
</style>
</resources>
Upvotes: 0
Views: 69
Reputation: 523
Looks like it's because you used the wrong schema, try replace all
android:showAsAction=...
with
app:showAsAction=...
it's working on my side, hope it helps.
Upvotes: 1
Reputation: 2105
You missed the onCreateOptionsMenu
method:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.your_menu_xml, menu);
return true;
}
Now it should work.
Upvotes: 1