我应该如何将进度条添加到 Xamarin.Android 中的操作栏?

How should I add progressbar to actionbar in Xamarin.Android?

我想将 progressbar 添加到 actionbar 但我不知道该怎么做

这是我的菜单项

<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item
      android:id="@+id/btnUpdateInActionBarMain"
      android:title="Barcode"
      android:icon="@drawable/icoUpdate1"
      android:showAsAction="always">
  </item>
  <item
    android:id="@+id/btnSearch"
    android:title="Search"
    android:icon="@drawable/icoSearch"
    android:showAsAction="always">
  </item>
  <item
    android:id="@+id/btnBarcode"
    android:title="Barcode"
    android:icon="@drawable/icoBarcode"
    android:showAsAction="always">
  </item>

</menu>

这是我的OnCreateOptionsMenu()

public override bool OnCreateOptionsMenu(IMenu menu)
{
    MenuInflater.Inflate(Resource.Menu.action_bar, menu);
    ActionBarMenu = menu;

    return base.OnCreateOptionsMenu(menu);
}

我想显示一个 progressbar 而不是 btnUpdateInActionBarMain,我应该怎么做?

添加为您的菜单

 <item android:id="@+id/action_favorite"
        android:icon="@drawable/yourIcon"
        clasificados:showAsAction="always"
        clasificados:actionViewClass="android.widget.ProgressBar"/>

要添加 progrssbar,您需要先将其添加到 xaml 文件中,如下所示

进度条xaml文件

<?xml version="1.0" encoding="utf-8"?>
<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/progressBar2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">    
</ProgressBar>

菜单xml文件,在菜单中再添加一项

 <item
        android:id="@+id/menu_load"
        android:icon="@drawable/navigation_refresh"
        android:orderInCategory="200"
        android:showAsAction="always"
        android:title="Load"/>

你的activity

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);

    SetContentView(Resource.Layout.activity_main);
    var  actionBar =ActionBar;
    actionBar.SetDisplayOptions(ActionBarDisplayOptions.ShowHome
    | ActionBarDisplayOptions.ShowTitle,ActionBarDisplayOptions.ShowCustom);
}

除此之外,您还需要为这次访问做更多的事情this

经过几天尝试解决这个问题后,我解决了它,也许它不是很漂亮,但它对我来说工作得很好 所以这是我在菜单文件夹

中的actionBar_progressBar.axml文件
    <?xml version="1.0" encoding="utf-8"?>
    <ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/progressBar2"
            android:layout_width="38dp"
            android:layout_height="38dp">
    </ProgressBar>

这是我在菜单文件夹中的 action_bar.xml 文件

<?xml version="1.0" encoding="utf-8" ?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
      <item
          android:id="@+id/btnUpdateHolder"
          android:title="Barcode"
          android:icon="@drawable/icoUpdate1"
          android:showAsAction="always">
      </item>
      <item
        android:id="@+id/btnSearch"
        android:title="Search"
        android:icon="@drawable/icoSearch"
        android:showAsAction="always">
      </item>
      <item
        android:id="@+id/btnBarcode"
        android:title="Barcode"
        android:icon="@drawable/icoBarcode"
        android:showAsAction="always">
      </item>
    </menu>

这是我在菜单文件夹中的 actionBar_Update.axml 文件

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="38dp"
            android:layout_height="38dp"
            android:id="@+id/btnUpdateInActionBarMain"
            android:background="@drawable/icoUpdate1" />

所以我像这样更改了 OnCreateOptionsMenu():

private IMenu ActionBarMenu;
public override bool OnCreateOptionsMenu(IMenu menu)
        {
            MenuInflater.Inflate(Resource.Menu.action_bar, menu);
            ActionBarMenu = menu;
            menuItem = ActionBarMenu.FindItem(Resource.Id.btnUpdateHolder);
            menuItem.SetActionView(Resource.Menu.actionBar_progressBar);
            menuItem.ExpandActionView();
            return base.OnCreateOptionsMenu(menu);
        }

在完成使图标恢复正常的工作后,我这样做了

menuItem.SetActionView(Resource.Menu.actionBar_Update);
btnUpdate = FindViewById<Button>(Resource.Id.btnUpdateInActionBarMain);