android - 当 ProgressBar 在 android 中可见时如何禁用用户交互?

标签 android user-interface progress-bar

我正在使用自定义 ProgressBar。现在,在执行任务时,我正在显示进度条,但用户仍然可以与 View 和控件进行交互。 如何在整个 View 上禁用用户交互,就像 ProgressDialog 一样,当它可见时。

我是否需要在主视图顶部使用透明 View 并在该 View 上显示进度条并在任务完成后隐藏该 View 。

或者只是获取我的 parentView 的 id 并将其设置为禁用?但是我将无法使背景变暗,就像在 View /Activity/fragment 上出现对话框时发生的情况一样。正确的?

我只想知道在进度条可见时禁止用户进行任何交互的方法。

谢谢

最佳答案

Your question: How to disable the user interaction while ProgressBar is visible in android?

要禁用用户交互,您只需添加以下代码

getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
                    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

要恢复用户交互,您只需添加以下代码

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

Here is an example: Note:I am giving you just an example to show how to disable or retain user interaction

在你的 xml.Something 中添加一个进度条

<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

希望对您有所帮助!

关于android - 当 ProgressBar 在 android 中可见时如何禁用用户交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36918219/

相关文章:

android - 如何将应用程序 fragment 设置为仅纵向模式?

android - 如何在 Android 中更改菜单项的文本颜色?

android - 如何在 Android 中创建倾斜的操作栏(工具栏)?

matlab - 非最大化Matlab GUI图形

java - 更改 JLabel 的一部分的字体?

javascript - JS ProgressBar 从 AJAX 调用的 PHP While 循环内部更新?

android - 如何在我自己的私有(private)应用程序中使用 Android 的人脸解锁?

user-interface - 尝试将 ToolStrip 与现有 ToolStrip 并排添加到 ToolStripPanel

c# - 如何在 C# 中使用进度条?

flutter - 在 flutter 中的 CircularProgressIndicator 上显示计时器进度