2017-03-14 1 views
-2

J'ai une vérification de condition pour décider si le ProgressBar doit apparaître ou non. La mise en page ressemble ci-dessous où l'ProgressBar est contenu dans un RelativeLayout:Modification de la visibilité d'Android ProgressBar

<RelativeLayout 
    android:id="@+id/someID" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"> 

    <ProgressBar 
     android:id="@+id/someProgressBar" 
     style="?android:attr/progressBarStyleLarge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:indeterminate="true" 
     /> 

</RelativeLayout> 

Dans le fragment:

ProgressBar progressBar; 

@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, 
         @Nullable Bundle savedInstanceState) { 
View root = inflater.inflate(R.layout.some_main_layout, container, false); 
progressBar =(ProgressBar) root.findViewById(R.id.someProgressBar); 
.... 

}

et j'essaie programtically de changer la visibilité de la barre de progression le setVisibility() fonctionne comme:

if(someCondition) 
     progressBar.setVisibility(View.GONE); 
    else 
     progressBar.setVisibility(View.VISIBLE); 

Mais ce qui précède ne fonctionne jamais. J'ai donc essayé d'apporter des modifications au niveau xml en ajoutant android:visibility="gone" qui définit la visibilité initiale à l'état GONE, mais je suis encore perdu sur la façon de rendre le ProgressBar visibile.

J'apprécie vos commentaires à ce sujet.

Merci.

+1

Cela signifie que vous devez vérifier votre état. Est-ce que ça satisfait? – Piyush

+0

@Piyush: Je viens de donner la structure de base du code. Je sais avec certitude que la condition fonctionne (par débogage). – vardhinisuresh27

+0

@ vardhinisuresh27 Il suffit de vérifier si vous définissez la visibilité de la barre de progression correcte, vous avez initialisé votre barre de progression en tant que 'someProgressBar' et vous définissez la visibilité de' progressBar'. Essayez également de modifier votre barre de progression en tant que variable globale et voir. – Redman

Répondre

0

Remplacez votre code avec ci-dessous,

if(someCondition) 
    progressBar.setVisibility(View.INVISIBLE); 
else 
    progressBar.setVisibility(View.VISIBLE); 
+0

Etes-vous sûr que cela résoudra le problème de l'OP? – Piyush

+1

vous n'avez pas beaucoup changé, il ne fera aucune différence. Invisible occupera juste l'espace même après être allé. jetez un oeil à [this] (http://stackoverflow.com/questions/11556607/android-difference-between-invisible-and-gone) – Redman

+0

Ya j'ai le même problème, une mise en page relative de temps crée ce problème. Ya mais il va occuper de l'espace dans la mise en page. –

1

vous pouvez essayer de cet espoir cela peut vous aider.

ProgressBar someProgressBar; 
TextView txtSend; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    txtSend = (TextView) findViewById(R.id.txtSend); 
    someProgressBar = (ProgressBar) findViewById(R.id.someProgressBar); 
    someProgressBar.setVisibility(View.GONE); 

    txtSend.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      if (someProgressBar.getVisibility() == View.GONE) { 
       someProgressBar.setVisibility(View.VISIBLE); 
      } else { 
       someProgressBar.setVisibility(View.GONE); 
      } 
     } 
    }); 
+0

@ vardhinisuresh27 votre problème est de résoudre ou non ?? –

0

Le problème est que vous utilisez un mauvais ID pour la barre de progression.

ProgressBar someProgressBar=(ProgressBar) root.findViewById(R.id.someProgressBar); 

    if(someCondition) 
     someProgressBar.setVisibility(View.GONE); 
    else 
     someProgressBar.setVisibility(View.VISIBLE); 

et changer votre code xml pour le progrès bar.If vous voulez par la barre de defaultprogress pour se cacher, puis le garder comme il est, par ailleurs supprimer la visibilité du xml.