ContentLoadingProgressBar永远不会显示

时间:2014-03-09 09:59:35

标签: android android-progressbar

我已将ProgressBar片段中的ContentLoadingProgressBar替换为<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/simple_match_parent_style"> <android.support.v4.widget.ContentLoadingProgressBar android:id="@+id/progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true"/> <TextView android:id="@+id/txt_no_songs" android:text="@string/txt_no_songs" android:layout_centerInParent="true" style="@style/txt_no_songs"/> <ListView android:id="@+id/list" android:fastScrollEnabled="true" android:divider="@null" style="@style/simple_match_parent_style"/> </RelativeLayout> 。 现在片段布局如下所示:

onViewCreated

我在@Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); progressBar = (ContentLoadingProgressBar) view.findViewById(R.id.progress); progressBar.show(); ... } 中显示了这个ProgressBar:

progressBar.hide()

出于测试目的,我已经删除ContentLoadingProgressBar调用以使ProgressBar出现在任何情况下。但问题是我的ContentLoadingProgressBar从未真正展示过。

我应该做些其他事情来展示ContentLoadingProgressBar吗?我没有设法找到使用{{1}}的任何相关示例,因此任何有用的示例也是可取的。提前谢谢。

5 个答案:

答案 0 :(得分:19)

似乎你需要一种风格,例如......

style="?android:attr/android:progressBarStyleHorizontal"

无论如何,如果我把它放在那里,对我来说是合适的,没有我什么都看不到。

还要考虑将其置于您的内容之上(即在xml中的下方)

答案 1 :(得分:5)

我试过这个:

<android.support.v4.widget.ContentLoadingProgressBar
        android:id="@+id/address_looking_up"
        style="?android:attr/android:progressBarStyleHorizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:visibility="visible" />

但是,它在Android 5.0上无效。有关ContentLoadingProgressbar的更多详细信息应该在这里。

PS:好的,'风格'的属性在这里很重要。将样式更改为“ ?android:attr / progressBarStyleLarge ”,它可以正常工作。

同时,此小部件的显示效果取决于您应用的主题。

答案 2 :(得分:0)

1.SDK说“在等待最小延迟后显示进度视图”。如果       在此期间,调用hide(),视图永远不可见。“ 我认为你的布局应该像这样修改:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        style="@style/simple_match_parent_style">
<TextView
android:id="@+id/txt_no_songs"
android:text="@string/txt_no_songs"
android:layout_centerInParent="true"
style="@style/txt_no_songs"/>

<ListView
android:id="@+id/list"
android:fastScrollEnabled="true"
android:divider="@null"
style="@style/simple_match_parent_style"/>
<android.support.v4.widget.ContentLoadingProgressBar
        android:id="@+id/progress"
        android:layout_width="wrap_content"
        style="?android:attr/progressBarStyleLarge"
        android:visibility="gone"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>
</RelativeLayout>

答案 3 :(得分:0)

如果同时创建多个视图,请检查ContentLoadingProgressBar.onAttachedToWindow()ContentLoadingProgressBar.onDetachedToWindow(),这可能导致private removeCallBacks()onAttachedToWindow()中的onDetachedToWindow()被调用。因此导致可运行对象无法运行,这意味着将不会显示任何内容。

例如,您可以: 只需删除private removeCallBacks()onAttachedToWindow()中的onDetachedToWindow()个呼叫。为了防止这种情况发生。不要忘记将private removeCallBacks()改成public并在onDestroyView()中调用它以进行适当的清理。

答案 4 :(得分:0)

您应将样式添加到ContentLoadingProgressBar。

<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:layout_height="wrap_content"/>