【问题标题】:setProgressBarIndeterminateVisibility(true) not workingsetProgressBarIndeterminateVisibility(true)不起作用
【发布时间】:2015-01-05 21:27:35
【问题描述】:

我正在尝试向我的 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
}

在创建时我不调用的另一种方法中。(这是一个 onClick 方法)

public void plus(View view){
    setProgressBarIndeterminateVisibility(true);//Nothing happens
    //...other stuff
}

我不明白怎么了,请帮帮我。

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

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

"这个 Activity 已经有一个由窗口装饰提供的操作栏。 不要请求 Window.FEATURE_ACTION_BAR 并将 windowActionBar 设置为 在您的主题中设置为 false 以改用工具栏。”

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

还有其他选择吗?

【问题讨论】:

  • 如果 //...other 的内容没有在单独的线程中完成,那么您可能不会看到更改。当它完成时,它会在你的真实之后立即触发你的后续错误分配。
  • @JaySnayder 没有错误分配

标签: android android-actionbar progress-bar


【解决方案1】:

第一:

工具栏现已弃用窗口提供的进度条。

第二:

你必须使用:

setSupportProgressBarIndeterminateVisibility(true);

而不是

setProgressBarIndeterminateVisibility(true);

因为你扩展了ActionBarActivity。 (因为您使用的是supportRequestWindowFeature 而不是requestWindowFeature

第三:

如果它崩溃,这是一个已知的issue。 如果您的图书馆已更新,很抱歉,但现在只是无操作:

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);
    }

布局:

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>

工具栏.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>

【讨论】:

  • 使用此样式,例如"&lt;style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"&gt;&lt;/style&gt;",并将您的活动主题设置为此。
  • setSupportProgressBarIndeterminateVisibility 方法名太长了..
  • 旁注:ActionBarActivity 已弃用。应该改用AppCompatActivity
  • setSupportProgressBarIndeterminateVisibility 已弃用
  • 是的。并且从文档中: 此方法已被弃用。 AppCompat 中不再提供进度条。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多