2017-03-14 2 views
-2

Ich habe eine Bedingungsprüfung, um zu entscheiden, ob die ProgressBar angezeigt werden soll oder nicht. Das Layout sieht aus wie unten, wo die ProgressBar innerhalb eines RelativeLayout enthalten ist:Ändern der Sichtbarkeit von 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> 

Im 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); 
.... 

}

und ich programtically versuchen, die Sichtbarkeit der Statusleiste zu ändern, mit die setVisibility() Funktion wie:

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

Aber das oben genannte funktioniert nie. Also habe ich versucht, Änderungen an der xml Ebene durch Hinzufügen von android:visibility="gone", die die erste Sichtbarkeit setzt auf GONE Zustand, aber ich bin wieder verloren, wie man die ProgressBar sichtbar machen.

Ich schätze Ihre Gedanken zu diesem Thema.

Danke.

+1

Es bedeutet, dass Sie Ihren Zustand überprüfen müssen. Erfüllt es? – Piyush

+0

@Piyush: Ich habe gerade die grundlegende Struktur des Codes gegeben. Ich weiß sicher, dass die Bedingung funktioniert (durch Debugging). – vardhinisuresh27

+0

@ vardhinisuresh27 überprüfe einfach, ob du die Sichtbarkeit des korrekten Fortschrittsbalkens einstellst, du hast deinen Fortschrittsbalken als 'someProgressBar' initialisiert und du stellst Sichtbarkeit auf' progressBar' ein. Versuchen Sie auch, Ihre Fortschrittsleiste als globale Variable zu ändern und zu sehen. – Redman

Antwort

0

Ersetzen Sie Ihren Code mit unten,

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

Sind Sie sicher, dass dies das Problem von OP löst? – Piyush

+1

Sie haben sich nicht viel verändert, es macht keinen Unterschied. Unsichtbar wird nur Platz nach dem gehen. werfen Sie einen Blick auf [this] (http://stackoverflow.com/questions/11556607/android-difference-between-invisible-and-gone) – Redman

+0

Ya Ich habe das gleiche Problem, einige Zeit relative Layout schafft dieses Problem. Ya aber es wird Raum im Layout besetzen. –

1

Sie zu dieser Hoffnung können versuchen, diese Ihnen helfen können.

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 Ihr Problem ist zu lösen oder nicht ?? –

0

Das Problem ist, dass Sie falsche ID für Fortschrittsbalken verwenden.

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

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

und Ihr XML-Code ändern für den Fortschritt bar.If Sie defaultprogress bar ausblenden möchten, dann ist es zu halten, wie es ist, sonst Sichtbarkeit von xml entfernen.

Verwandte Themen