귀하의 질문 : ProgressBar가 Android에서 표시되는 동안 사용자 상호 작용을 비활성화하는 방법은 무엇입니까?
사용자 상호 작용을 비활성화하려면 다음 코드를 추가하면됩니다.
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);
}
});
}
그리고 사용자가 backPressed하면 진행률 표시 줄을 다시 제거하면 사용자 상호 작용이 유지됩니다.
@Override
public void onBackPressed() {
super.onBackPressed();
mProgressBar.setVisibility(View.GONE);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
}
비활성화 및 회색으로 표시된 디스플레이 기능을 추가하려면 부모를 채우는 선형 레이아웃을 xml 레이아웃 파일에 추가해야합니다. # B0000000하고는 그것의 배경을 설정 visibilty
하는 방법에 대해 GONE
. 그런 다음 프로그래밍 방식 visibility
으로 VISIBLE
.
이 도움을 바랍니다!