查看可见性为View.GONE时,使用RelativeLayout进行发布
我有一个RelativeLayout
因此:
<RelativeLayout> <TextView1/> <TextView2/> // <-- View.VISIBLE OR View.GONE <TextView3/> <TextView4/> </RelativeLayout>
每个TextView
都使用android:layout_below
固定在以前的TextView
下面。
问题是,TextView2可能会或可能不会在那里( View.VISIBLE
或View.GONE
); 如果它是View.VISIBLE
,那么一切都很好,但如果它是View.GONE
,那么TextView3最终将被渲染在TextView1之上。
我已经尝试了各种方法来解决这个问题,但是每次我都被RelativeLayout
''定义'规则之前不能引用一个id'。
我希望我在这里错过了一些明显的东西。
您可以将textview 2和3放置在LinearLayout中,并将线性布局保留在textview 1下方。
你可以使用这个标签:
android:layout_alignWithParentIfMissing="true"
从文档:
如果设置为true,当无法findlayout_toLeftOf,layout_toRightOf等的锚点时,父级将用作锚点。
为什么不更新TextView3的below
属性,当你更新TextView2的可见性? (我假设你在代码中这样做)
就像是
TextView tv = (TextView) findViewById(R.id.textview3); RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) tv.getLayoutParams(); lp.addRule(RelativeLayout.BELOW, R.id.textview1); ((TextView) view).setLayoutParams(lp);
这个答案并没有解决你的具体问题,但确实解决了类似的问题,所以希望这将有助于某人。
我有一种情况,我的相对布局没有相当于TextView1。 所以,在我的情况下,如果TextView2是GONE,那么我希望TextView3与父级的顶端alignment。 我通过向TextView3添加属性android:layout_alignWithParentIfMissing =“true”来解决这个问题。 请参阅http://developer.android.com/resources/articles/layout-tricks-efficiency.html 。
不幸的是,我没有看到一种方法来指定一个替代的alignment锚点,除非它是父类。
忘记INVISIBLE
或GONE
,用这个代替:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams(); params.height = 0; params.setMargins(0,0,0,0); view.setLayoutParams(params);
如果你没有被迫使用RelativeLayout
:改为使用LinearLayout
。
- Android:java.lang.ClassCastException:android.widget.imageView无法转换为android.widget.textView
- 导轨 – 将控制台输出redirect到一个文件
- 如何用相机测量物体的高度,宽度和距离?
- Android – ListView – performItemClick
- 有没有办法在Android 3.0中隐藏系统栏? 这是一个内部设备,我正在pipe理导航
- SQLite查询以不区分大小写的字母顺序
- 使用libjingle在Android上创build一个带有“自定义”捕获器的WebRTC VideoTrack
- 包括Google Play服务库时,为什么权限会自动添加到我的AndroidManifest中
- 从Android浏览器/ Chrome启动自定义Android应用程序
- 在录制声音剪辑的Android上的语音识别?
- 有没有办法在Android的应用程序图标添加徽章?