我有一个简单的主要布局,然后我添加一个片段布局,只显示加载在该主布局之上的指示器.问题是我仍然可以按下加载指示器后面的按钮.
无论如何禁用触摸所以它不会传递到后面?我不想一个接一个地禁用主屏幕上的每个按钮.
解决方法
您可以在包含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()中使其不可见.