2

Wenn ich versuche, die Sichtbarkeit der Gruppe beim Klicken auf die Schaltfläche festzulegen, wirkt sich dies nicht auf die Sichtbarkeit der Ansicht aus. Com.android.support.constraint verwenden: constraint-layout: 1.1.0 -beta4. Ich habe versucht, es elementweise ohne Probleme zu setzen, aber keinen Erfolg mit der Gruppe.Sichtbarkeit der Beschränkungsgruppe kann nicht festgelegt werden

Mein MainActivity.kt

private fun toggleLoginUI(show: Boolean) { 
    if (show) { 
     group.visibility = VISIBLE 
    } else { 
     group.visibility = INVISIBLE 
    } 
} 

fun onClick(view: View) { 
    when (view.id) { 
     R.id.button -> toggleLoginUI(true) 
     R.id.button4 -> toggleLoginUI(false) 
    } 
} 

Mein activity_main.xml

<android.support.constraint.ConstraintLayout.. 

      <TextView 
       android:id="@+id/textView" 
... /> 

      <TextView 
       android:id="@+id/textView2" 
... /> 

      <Button 
       android:id="@+id/button" 
.../> 

      <Button 
       android:id="@+id/button4" 
... /> 


      <android.support.constraint.Group 
       android:id="@+id/group" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:visibility="visible" 
       app:constraint_referenced_ids="textView,textView2" /> 
      </android.support.constraint.ConstraintLayout> 
+0

haben Blick [diese] (https://stackoverflow.com/ Fragen/44449495/toggle-Sichtbarkeit der Kette-Gruppe-in-Constraint-Layout) –

+0

Was ist das Problem geben das Protokoll –

+0

gibt es keinen Fehler in der log.it tut einfach nichts – SS2095

Antwort

2

Das sieht wie ein Fehler für mich aus. GONE funktioniert aber INVISIBLE nicht und ich denke es sollte. Es kann einen Fehlerbericht wert sein, es sei denn, jemand kann posten, wo mein Denken falsch ist. (Ich verwende constraint-layout:1.1.0-beta4.)

In der Zwischenzeit ist hier eine Problemumgehung, die explizit die IDs innerhalb der Gruppe abruft und die Sichtbarkeit jeder abgerufenen Ansicht setzt.

Innerhalb MainActivity.kt

private fun toggleLoginUI(show: Boolean) { 
    if (show) { 
     setGroupVisibility(mLayout, group, Group.VISIBLE) 
    } else { 
     setGroupVisibility(mLayout, group, Group.INVISIBLE) 
    } 
} 

private fun setGroupVisibility(layout: ConstraintLayout, group: Group, visibility: Int) { 
    val refIds = group.referencedIds 
    for (id in refIds) { 
     layout.findViewById<View>(id).visibility = visibility 
    } 
} 

mLayout ist die ConstraintLayout.

Update: Hier ist eine weitere Behelfslösung, die sich die Tatsache zunutze, dass nimmt von GONE Werke/ändern wie erwartet:

private fun toggleLoginUI(show: Boolean) { 
    if (show) { 
     group.visibility = GONE 
     group.visibility = VISIBLE 
    } else { 
     group.visibility = GONE 
     group.visibility = INVISIBLE 
    } 
} 
+0

das funktioniert, aber auf einen Weg gehofft hat, der keine Schleife durch die elements.thanks für die Antwort brauchte.hope wird gelöst. – SS2095

+0

@ SS2095 Wenn es ein Fehler ist, dann müssen Sie auf eine zukünftige Version warten. (Und ich denke, dass es ein Fehler ist.) Dies ist das Beste, was in der Zwischenzeit getan werden kann, wenn Sie diese Funktionalität benötigen. – Cheticamp

+0

@ SS2095 Alternativer Workaround zur Antwort hinzugefügt. – Cheticamp

0

nur Folgezeile hinzufügen Sie es ändern können. so ist es sichtbar.

group.visibility=ConstraintLayout.GONE 
+0

funktioniert es versuchen Sie es. –

+1

funktioniert es.danke. – SS2095

Verwandte Themen