[解決済み] ProgressBarが表示されている間、ユーザーとのインタラクションを無効にするには?
質問
カスタム ProgressBar を使用しています。タスクが進行している間、プログレス バーを表示していますが、ユーザーはまだビューやコントロールと対話できます。 ProgressDialog が表示されているときと同じように、ビュー全体のユーザーとの対話を無効にするにはどうしたらよいでしょうか。
メインビューの上に透明なビューを使用し、そのビューにプログレスバーを表示し、タスクが完了するとそのビューを非表示にする必要がありますか。
または、parentViewのidを取得し、それをdisabledに設定するだけでしょうか?しかし、その場合、ビュー/アクティビティ/フラグメントにダイアログが表示されるときのように、背景を暗くすることができません。そうですよね?
私は、プログレスバーが表示されている間、ユーザーの操作を無効にする方法を知りたいだけです。
ありがとうございます。
どのように解決するのですか?
<ブロッククオートご質問の件です。AndroidでProgressBarが表示されている間、ユーザーとのインタラクションを無効にするにはどうしたらよいでしょうか。
ユーザーとのインタラクションを無効にするには、以下のコードを追加する必要があります。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
ユーザーとのインタラクションを取り戻すには、次のコードを追加するだけです。
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
以下はその例です。 注:ユーザーとのインタラクションを無効にしたり保持したりする方法を示すために、単なる例をあげているのです。
xmlにプログレスバーを追加してください。
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:visibility="gone"/>
MainActivityでは、ボタンが押されるとプログレスバーを表示し、ユーザーとのインタラクションを無効化します。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView = (ImageView) findViewById(R.id.imageView);
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mProgressBar.setVisibility(View.VISIBLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
}
});
}
そして、ユーザーがバックプレスをしたときに、ユーザーのインタラクションを保持したまま、再びプログレスバーを削除します。
@Override
public void onBackPressed() {
super.onBackPressed();
mProgressBar.setVisibility(View.GONE);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
}
表示を無効にしてグレーアウトさせる機能を追加したい場合は、xmlレイアウトファイルに、親を埋める線形レイアウトを追加する必要があります。その背景を#B0000000に設定し、その
visibilty
を
GONE
. そして、プログラムによってその
visibility
を
VISIBLE
.
これが役に立つといいのですが
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
-
[解決済み] Androidのランドスケープモードを無効にする方法を教えてください。
-
[解決済み] RecyclerView.Stateを使って、RecyclerViewのスクロール位置を保存するには?
-
[解決済み] CardView layout_width="match_parent "が親のRecyclerViewの幅と一致しない。
-
[解決済み] AndroidでラジオボタンにOnClickListenerを設定するには?
-
[解決済み] PendingIntentの "requestCode "は何に使うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] Androidでマイナスマージンを使用するのは悪いことですか?
-
[解決済み] Android ConstraintLayout - あるビューを別のビューの上に配置する
-
[解決済み] Android Navigation Architecture Component - 現在表示されているフラグメントを取得する
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] FloatingActionButtonのサンプルとサポートライブラリ
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] アダプタからActivityメソッドを呼び出す