xamarin.android - 用户登录时以编程方式显示 ProgressBar
问题描述
我在 Android 中以编程方式在 Centering ProgressBar 中找到了这个类,它将以编程方式显示进度条,问题是它是一个 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;
}
}
}
一旦我将其转换并工作,我希望它覆盖我的登录视图,直到视图完成处理。
解决方案
我帮你把 Java 代码转换成 C#,有运行的 GIF。
有代码。
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;
}
}
您可以直接使用它,就像 Activity 中的以下代码一样。
var progress= new ProgressBarHandler(this);
progress.show();
推荐阅读
- javascript - 如何杀死击中敌人的武器子弹?移相器 2.7.5
- python - Discord.py - Storing player warns
- algorithm - 找到最好和最差的 O()
- amazon-web-services - Is AWS S3 trigger is Sync or Async process?
- r - Multiple reactive select input in a datatable
- elasticsearch - 更新关键字字段的 ignore_above
- php - how to get next sequence value using php?
- excel - 如何将 Visual Basic 多选应用于列?
- go - 将 []fmt.Stringer 参数传递给 func
- paket - 在 paket.dependencies 文件中,运算符 `==` 的含义是什么?