Jam*_*mes 74 android android-relativelayout
我有一个RelativeLayout:
<RelativeLayout>
<TextView1/>
<TextView2/> // <-- View.VISIBLE OR View.GONE
<TextView3/>
<TextView4/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
每个TextView锚定跌破前期TextView用android:layout_below.
的问题是,TextView2可能会或可能不会存在(无论是View.VISIBLE或View.GONE); 如果它是View.VISIBLE,那么一切都很好,但如果是的View.GONE话,TextView3最终会在TextView1上呈现.
我已经尝试了各种方法来解决这个问题,但是每次都被RelativeLayout's' 抓住了,你就无法在定义'规则之前引用id.
我希望我在这里遗漏一些明显的东西.
ini*_*rsr 185
你可以使用这个标签:
android:layout_alignWithParentIfMissing="true"
Run Code Online (Sandbox Code Playgroud)
来自文档:
如果设置为true,则在无法找到layout_toLeftOf,layout_toRightOf等的锚点时,父项将用作锚点.
Kar*_*ran 40
您可以在LinearLayout中放置textview 2和3,并将线性布局保留在textview 1下面.
slu*_*lup 10
更新belowTextView2的可见性时,为什么不更新TextView3 的属性?(我假设你在代码中这样做)
就像是
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);
Run Code Online (Sandbox Code Playgroud)
这个答案并没有解决你的具体问题,但确实解决了类似的问题,所以希望这对某些人有帮助.
我有一种情况,我的相对布局没有相当于你的TextView1.所以,在我的情况下,如果TextView2是GONE,那么我希望TextView3与父级的顶部对齐.我通过向TextView3添加属性android:layout_alignWithParentIfMissing ="true"解决了这个问题.请参阅http://developer.android.com/resources/articles/layout-tricks-efficiency.html.
不幸的是,我没有看到指定备用对齐锚的方法,除非它是父对象.
你可以这样做
<RelativeLayout>
<TextView1/>
<FrameLayout>
<TextView2/> // <-- View.VISIBLE OR View.GONE
</FrameLayout>
<TextView3/>
<TextView4/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
让TextView3在这个没有背景的FrameLayout下面,这样如果TextView2消失了,它不占用空间。
小智 6
忘了INVISIBLE或者GONE,使用它代替:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams();
params.height = 0;
params.setMargins(0,0,0,0);
view.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26791 次 |
| 最近记录: |