setProgressBarIndeterminateVisibility(true)不起作用

Rob*_*hof 11 android android-actionbar progress-bar

我正在尝试向actionBar添加进度条.我在谈论旋转圈.我做了一个请求并尝试设置是可变的,但没有任何反应.我已经阅读了许多可能的问题,但仍然无法弄清楚我做错了什么.

我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);//Above setContentView, very important
    setContentView(R.layout.activity_main);
    //...other stuff
}
Run Code Online (Sandbox Code Playgroud)

在另一个我没有在create上调用的方法.(这是一个onClick方法)

public void plus(View view){
    setProgressBarIndeterminateVisibility(true);//Nothing happens
    //...other stuff
}
Run Code Online (Sandbox Code Playgroud)

我不明白什么是错的,请帮帮我.

注意:我从未将其设置为false

编辑:我试过mmlooloo第二部分,但绝对注意到发生了.甚至不是第3部分.所以我尝试了第4部分,但我给了我一个例外.

"此活动已经有一个由窗口装饰提供的操作栏.请不要在主题中请求Window.FEATURE_ACTION_BAR并将windowActionBar设置为false以使用工具栏."

我删除了Window.FEATURE_ACTION_BAR请求,但它给了我相同的异常.我不认为我需要将windowActionBar设置为false,但我做了,它仍然给了我相同的异常.

还有其他选择吗?

mml*_*loo 41

第一:

提供的窗口现在,工具栏不推荐使用进度条.

第二:

你必须使用:

setSupportProgressBarIndeterminateVisibility(true);
Run Code Online (Sandbox Code Playgroud)

代替

setProgressBarIndeterminateVisibility(true);
Run Code Online (Sandbox Code Playgroud)

因为你扩展ActionBarActivity.(因为你正在使用supportRequestWindowFeature而不是requestWindowFeature)

第三:

如果它崩溃,这是一个已知问题.如果您的库已更新抱歉,但现在只是一个无操作:

setSupportProgressBarIndeterminateVisibility()崩溃已针对将来的版本修复,因为它将是一个无操作.

第四:

我的解决方案

使用带有progressBar小部件的工具栏:

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        ProgressBar progressBar = (ProgressBar) findViewById(R.id.progress_spinner);
        progressBar.setVisibility(View.VISIBLE);
    }
Run Code Online (Sandbox Code Playgroud)

布局:

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include layout="@layout/toolbar"/>

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

toolbar.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ProgressBar
        android:id="@+id/progress_spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:indeterminate="true"
        android:visibility="gone" />

</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

  • 不推荐使用`setSupportProgressBarIndeterminateVisibility` (7认同)
  • `setSupportProgressBarIndeterminateVisibility`方法名太长了.. (3认同)
  • 旁注:不推荐使用`ActionBarActivity`.应该使用`AppCompatActivity`代替. (2认同)
  • 是的.从文档:_This方法已被弃用.AppCompat中不再提供进度条._ (2认同)