如何在Xamarin.Android中将进度栏添加到操作栏?

时间:2018-08-02 10:43:31

标签: android xamarin xamarin.android android-actionbar

我想将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,我应该怎么做?

3 个答案:

答案 0 :(得分:0)

在菜单中添加为

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

答案 1 :(得分:0)

要在操作中添加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"/>

您的活动

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

做更多的事情

答案 2 :(得分:0)

尝试解决此问题几天后,我解决了它,也许它不是很漂亮,但是对我来说很好 所以这是我在菜单文件夹中的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);