我有一个简单的主要布局,然后我添加一个片段布局,只显示加载在该主布局之上的指示器.问题是我仍然可以按下加载指示器后面的按钮.
无论如何禁用触摸所以它不会传递到后面?我不想一个接一个地禁用主屏幕上的每个按钮.
解决方法
您可以在包含ProgressBar的布局中将“可单击”属性设置为“true”:
<FrameLayout android:id="@+id/progressBarContainer" android:layout_height="match_parent" android:layout_width="match_parent" android:clickable="true" > <ProgressBar android:id="@+id/progressBar" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" /> </FrameLayout>
然后,当ProgressBar可见时,其容器(填充整个屏幕虽然它不可见)将拦截任何点击事件,以便在您的ProgressBar显示时它们不会落入底层布局.
要使用此功能,请在要显示ProgressBar时执行此操作:
findViewById(R.id.progressBarContainer).setVisibility(View.VISIBLE);
然后在完成后执行此操作:
findViewById(R.id.progressBarContainer).setVisibility(View.INVISIBLE);
例如,如果您在AsyncTask中使用它,则可以在onPreExecute()中使其可见,然后在onPostExecute()中使其不可见.