使用Progress
控件很方便,但是如果有居中需求的话,某些场景会增加一层布局嵌套
而且每个布局都要书写,很麻烦
而使用ProgressDialog
书写起来很方便,但是某些场景不能很直接的提供正确的上下文.(容器不是activity
或 fragment
时)
各位大哥在实际开发中如何实现进度条的需求的?
//我尝试这样操作的情况,下 在app第一次进入的时候,我点击按钮向容器上添加progressbar的时候,这个progressbar是不会旋转的,卡在界面上
//而关闭这个activity后(app中还有activity存在),再次进入activity 继续添加,这时候progressbar就会旋转了,这是为什么呢?
ProgressBar progressBar = new ProgressBar(this);
ViewGroup decorView = (ViewGroup) getWindow().getDecorView();
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER);
progressBar.setLayoutParams(layoutParams);
decorView.addView(progressBar);
天蓬老师2017-04-18 09:18:17
これに関して建設的な提案はできません。場合によっては、トラブルを避けるために、ProgressBar の XML インターフェイスを作成し、使用するときにそれをインフレートして、これを BaseActivity に直接挿入します。ロジックは別の層にカプセル化されているため、基本的にいくつかの単純なニーズを満たすことができます。
さらに複雑にするために、progressBar がユーザーの操作と対話できるようにします。たとえば、編集インターフェイスに画像をアップロードするための入り口がある場合、ユーザーがアップロードを待っている間に、Progress ウィジェットへの送信キーを変更できます。画像を選択した後、ユーザーの操作を妨げるだけでなく、進行状況を効果的に促します。
ProgressDialog に関しては、次のステップに進む前に特定のファイルをロードする必要がある場合など、論理的な順序が強い場合を除いて、これはブロックしすぎると思います。
PHP中文网2017-04-18 09:18:17
を使い続けてください。
Context
を入手できる限り、ProgressDialog
Application
を例に挙げます:
ダイアログ ポップアップのプロキシとしてアクティビティを作成します
startActivity(Intent)
天蓬老师2017-04-18 09:18:17
私は実際には、質問にある「コンテキストが正しく提供されていない」がどのようなシナリオなのかという質問に興味があります。質問者は、progressbar
がコンテキストを取得できるが、progressdialog
が取得できないシナリオに遭遇しましたか?
巴扎黑2017-04-18 09:18:17
アクティビティまたはフラグメント コンテナではない場合、コンテナは作成時にアクティビティまたはフラグメント内に存在する必要があります。
そうでない場合は、その親コンテナまたは親コンテナがアクティビティまたはフラグメント内に存在する必要があります。 。
この場合、コンストラクターを介してレベルごとにコンテキストを渡すことができますね。