Android - ProgressBar setVisibility to GONE无法正常工作

时间:2014-06-21 15:04:10

标签: android android-fragments progress-bar android-spinner

我一直在为我的应用中的片段添加ProgressBar。我将它设置为两个主要片段(用作制表符),如下所示:

ProgressBar中的

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

</RelativeLayout>

设置ProgressBar VISIBLEGONE

spinner = (ProgressBar)getActivity().findViewById(R.id.progressBar1);
spinner.setVisibility(View.VISIBLE);

spinner.setVisibility(View.GONE);

这没有任何问题。我尝试将另一个ProgressBar添加到另一个具有WebView

的片段 ProgressBar中的

fragment_article.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="info.androidhive.slidingmenu.ArticleFragment$PlaceholderFragment" >

    <WebView android:id="@+id/webPage"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"/>

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

</RelativeLayout>

设置可见性:

spinner = (ProgressBar)getActivity().findViewById(R.id.progressBar1);
spinner.setVisibility(View.VISIBLE);

spinner.setVisibility(View.GONE);

以与上一代码相同的方式设置可见性,但出于某种原因,这并未将ProgressBar设置为GONE。不确定是什么问题。

我已经尝试使用clearAnimation建议Android, setVisbility to gone not working in RelativeLayout,但仍然没有。

spinner.clearAnimation();
spinner.setVisibility(View.GONE);

4 个答案:

答案 0 :(得分:6)

检查此代码:

spinner = (ProgressBar)getActivity().findViewById(R.id.progressBar1);

如果你使用片段,它应该是这样的:

spinner = (ProgressBar)viewIinflated.findViewById(R.id.progressBar1);//same case with dialogs

如果您正在使用活动,那么:

spinner = (ProgressBar)findViewById(R.id.progressBar1);

答案 1 :(得分:1)

可能是因为View.GONE会阻止View被吸引到屏幕上,而另一个View android:layout_align[POSITION]组件可能被定义为{{1}因此无法计算他们的位置。

View会起作用,因为它只是让它不可见,但View.INVISIBLE仍然存在,而其他View可以计算其位置,如果对齐设置为

答案 2 :(得分:-1)

这项工作对我来说:

rootView.findViewById(R.id.progress_bar).setVisibility(View.GONE);

答案 3 :(得分:-1)

progressBar.setVisibility(ProgressBar.VISIBLE);