c# - 为什么图标不显示在工具栏中?
问题描述
我正在使用工具栏作为菜单创建简单的应用程序。不幸的是,图标没有显示,我请你帮忙。可能问题出在styles.xml 中。是的,我检查了很多类似的问题,但仍然遇到麻烦。也许工具栏与 ActionBar 冲突。没有把握。这是我的代码:菜单 xml 文件:
<?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 不完整,因为工具栏上的所有操作都在 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);
}
}
}
样式.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>
解决方案
你错过了onCreateOptionsMenu
方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.your_menu_xml, menu);
return true;
}
现在它应该可以工作了。
推荐阅读
- python-3.x - pygsheets将csv导入工作表
- java - 带有字符串错误输出的 switch 语句
- python - Keras CuDNNLSTM 隐式激活函数?
- python - 我想在每个循环中选择不同的元素
- java - 在 AtomicBoolean 上同步?
- angularjs - 在angularjs中选中checkall和checkbox时推送并拼接到数组中
- android - Android 4.3 上的 javax.net.ssl.SSLHandshakeException
- excel - 为什么我的代码在工作簿边界上使用 ist 时不起作用,但在同一个工作簿中使用它时起作用?
- c# - 使用 DBWrite 向 PLC 写入位不会给出正确的结果(结果 = 3145782)
- mysql - MySQL在嵌套的左连接中获取总和