Search code examples
androidxamarinxamarin.androidandroid-actionbar

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


I want to add progressbar to actionbar but I don't know how to do it

This is my menu items

<?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>

This my OnCreateOptionsMenu()

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

    return base.OnCreateOptionsMenu(menu);
}

I want to show a progressbar instead of btnUpdateInActionBarMain, how should I do it?


Solution

  • After few days of trying to solve this problem i solved it, maybe it's not pretty but it is working fine for me so this is my actionBar_progressBar.axml file in menu folder

        <?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>
    

    This is my action_bar.xml file in menu folder

    <?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>
    

    This is my actionBar_Update.axml file in menu folder

    <?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" />
    

    so i changed OnCreateOptionsMenu() like this:

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

    After doing my job to bring the icon back to normal i do this

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