android – 隐藏GridLayout中的行

前端之家收集整理的这篇文章主要介绍了android – 隐藏GridLayout中的行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在一个包含3列和2行的xml文件中创建了一个GridLayout.
如何通过代码隐藏第二行?

我尝试为该行内的视图设置可见性,但第一列似乎尽可能地扩展.

  1. <GridLayout
  2. android:id="@+id/lytInfo"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. android:alignmentMode="alignBounds"
  6. android:columnCount="3"
  7. android:columnOrderPreserved="false"
  8. android:paddingTop="@dimen/padding.verySmall" >
  9.  
  10. <TextView android:id="@+id/tvNameLabel"
  11. android:ellipsize="end"
  12. android:maxLines="1"
  13. android:singleLine="true"
  14. android:text="@string/name"
  15. android:textColor="@color/black"
  16. android:textSize="@dimen/text.normal" />
  17.  
  18. <Space android:layout_width="@dimen/padding.veryVerySmall" android:id="@+id/tvNameSpace"/>
  19.  
  20. <TextView
  21. android:id="@+id/tvName"
  22. android:ellipsize="end"
  23. android:maxLines="1"
  24. android:singleLine="true"
  25. android:textColor="@color/darkRed"
  26. android:textSize="@dimen/text.normal"
  27. android:textStyle="bold" />
  28.  
  29. <TextView
  30. android:ellipsize="end"
  31. android:maxLines="1"
  32. android:singleLine="true"
  33. android:text="@string/pwd"
  34. android:textColor="@color/black"
  35. android:textSize="@dimen/text.normal" />
  36.  
  37. <Space android:layout_width="@dimen/padding.veryVerySmall" />
  38.  
  39. <TextView
  40. android:id="@+id/tvPwd"
  41. android:ellipsize="end"
  42. android:maxLines="1"
  43. android:singleLine="true"
  44. android:textColor="@color/darkRed"
  45. android:textSize="@dimen/text.normal"
  46. android:textStyle="bold" />
  47.  
  48.  
  49. </GridLayout>

这是我隐藏视图的时候:

  1. f(knownName)
  2. {
  3. viewRoot.findViewById(R.id.tvName).setVisibility(View.GONE);
  4. viewRoot.findViewById(R.id.tvNameSpace).setVisibility(View.GONE);
  5. viewRoot.findViewById(R.id.tvNameLabel).setVisibility(View.GONE);
  6. break;
  7. }

解决方法

如果将“View.GONE”替换为“View.INVISIBLE”,则行中的视图将不会被看到(不可见),但它们仍将被测量,并且GridLayout将表现得像它们仍然存在一样.使用GONE导致它们测量零并且GridLayout折叠第1行.
  1. findViewById(R.id.tvName).setVisibility(View.INVISIBLE);
  2. findViewById(R.id.tvNameSpace).setVisibility(View.INVISIBLE);
  3. findViewById(R.id.tvNameLabel).setVisibility(View.INVISIBLE);

猜你在找的Android相关文章