用户登录时以编程方式显示ProgressBar

时间:2019-04-25 18:23:39

标签: xamarin.android visual-studio-2017

我在Centering ProgressBar Programmatically in Android处发现了该类,该类会以编程方式显示进度条,问题是这是Xamarin Android Studio示例,我正尝试将其转换为Visual Studio 2017的Xamarin。这是我拥有的代码使用似乎无法找到Xamarin VS 2017的行成功转换。

using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace OML_Android
{
    class ProgressBarHandler
    {
        private ProgressBar mProgressBar;
        private Context mContext;

        public ProgressBarHandler(Context context)
        {
            mContext = context;

            ViewGroup layout = (ViewGroup)((Activity)context).FindViewById(Android.Resource.Id.Content).RootView;

            mProgressBar = new ProgressBar(context, null, Android.Resource.Attribute.ProgressBarStyleLarge);

            // there is no setIndeterminate method for progressbar
            mProgressBar.setIndeterminate(true);

            // I cannot find an equivilent for LayoutParams
            RelativeLayout.LayoutParams params = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MatchParent, RelativeLayout.LayoutParams.MatchParent);

            RelativeLayout rl = new RelativeLayout(context);

            // No equivalent for Gravity.CENTER
            rl.SetGravity(Gravity.CENTER);
            rl.AddView(mProgressBar);

            layout.AddView(rl, params);

            hide();
        }

        public void show()
        {
            mProgressBar.Visibility = Android.Views.ViewStates.Visible;
        }

        public void hide()
        {
            mProgressBar.Visibility = Android.Views.ViewStates.Invisible;
        }
    }
}

一旦完成转换并工作,我希望它覆盖我的登录视图,直到该视图完成处理为止。

1 个答案:

答案 0 :(得分:0)

我帮助您将Java代码转换为C#,并且正在运行GIF。

enter image description here

有代码。

    class ProgressBarHandler
{
    private ProgressBar mProgressBar;
    private Context mContext;

    public ProgressBarHandler(Context context)
    {
        mContext = context;

        ViewGroup layout = (ViewGroup)((Activity)context).FindViewById(Android.Resource.Id.Content).RootView;

        mProgressBar = new ProgressBar(context, null, Android.Resource.Attribute.ProgressBarStyleLarge);

        // there is no setIndeterminate method for progressbar
      //  mProgressBar.SetIndeterminate(true);
        mProgressBar.Indeterminate = true;
        // I cannot find an equivilent for LayoutParams
        RelativeLayout.LayoutParams layoutparams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MatchParent, RelativeLayout.LayoutParams.MatchParent);

        RelativeLayout rl = new RelativeLayout(context);

        // No equivalent for Gravity.CENTER
        rl.SetGravity(GravityFlags.Center   );
        rl.AddView(mProgressBar);

        layout.AddView(rl, layoutparams);

        hide();
    }

    public void show()
    {
        mProgressBar.Visibility = Android.Views.ViewStates.Visible;
    }

    public void hide()
    {
        mProgressBar.Visibility = Android.Views.ViewStates.Invisible;
    }
}

您可以直接使用它,就像“活动”中的以下代码一样。

var progress= new ProgressBarHandler(this);
progress.show();
相关问题