进度条未在屏幕中显示但在调试器中显示

时间:2017-07-05 15:00:33

标签: android

我在用户执行搜索查询时添加了一个进度条,它不会显示在屏幕上。以下是片段:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Button searchButton = (Button) findViewById(R.id.searchButton);
        setContentView(R.layout.activity_main); //main layout, which has a child layout called resultsLayout
        searchButton.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            EditText searchString = (EditText) findViewById(R.id.searchString);
            search(searchString.getText().toString());
        }
    });

    protected void search(String searchString){
        LinearLayout resultLayout = ((LinearLayout)    findViewById(R.id.resultsLayout));
        resultLayout.addView(DisplayResults.getLoadBar(getApplicationContext()));
        //do search
        resultLayout.removeAllViews();
    }

    public static ProgressBar getLoadBar(Context context){
        ProgressBar loadBar = new ProgressBar(context);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        loadBar.setLayoutParams(params);
        loadBar.setVisibility(View.VISIBLE);
        return loadBar;
    }

我知道其中一些可能不需要,比如创建时的setVisibility权限,但是我尝试了几件事并且它不起作用。也许没有足够的时间来展示酒吧?(搜索需要大约1.5秒)

我还调试了应用程序,它将ProgressBar显示为布局的子项,但我仍然无法在屏幕上看到它。

enter image description here

3 个答案:

答案 0 :(得分:0)

let val = data.entry(department.to_string())
                .or_insert(vec!());

        val.extend(vec!(employee.to_string()));

您可以尝试此ProgressDialog对象实现。 https://developer.android.com/reference/android/app/ProgressDialog.html

答案 1 :(得分:0)

if (textBox1.backcolor = Color.Red)方法

的末尾添加setContentView(resultLayout);

答案 2 :(得分:0)

我意识到android不会为代码中的每条指令更新屏幕,显然它只在函数结束时才这样做。话虽这么说,我必须在一个单独的线程中进行搜索,以便在搜索开始和结束之间出现加载。