• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

无法设置约束组的可见性

Android 来源:SS2095 3次浏览

当我尝试在按钮单击上设置组的可见性时,它不会影响视图的可见性。使用com.android.support.constraint:constraint-layout:1.1.0 -beta4。我已经尝试过将它设置为元素明智而没有问题,但是没有成功。无法设置约束组的可见性

我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) 
    } 
} 

我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> 


===========解决方案如下:

这看起来像是一个bug。 GONE作品,但INVISIBLE不,我认为它应该。除非有人可以在我的思维错误的地方发帖,否则可能值得一个错误报告。 (我正在使用constraint-layout:1.1.0-beta4。)

与此同时,这里是一个解决方法,显式检索组中的ID并设置每个检索视图的可见性。

在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 
    } 
} 

mLayoutConstraintLayout

更新:这里是另一个变通,它利用的事实,改变/从GONE按预期工作的优势:

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

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)