我有一个简单的主要布局,然后我添加一个片段布局,只显示在该主布局顶部加载的指示器。问题是我仍然可以按下加载指示器后面的按钮。
是否有禁用触摸所以它不会传递到后面?我不想一个接一个地禁用主屏幕上的每个按钮。
答案 0 :(得分:14)
您可以在包含ProgressBar的布局中将“clickable”属性设置为“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()中使它不可见。
答案 1 :(得分:1)
在您想阻止用户触摸时返回true
。在Activity
。
@Override
public boolean onTouchEvent( MotionEvent event ) {
return true;
}