【发布时间】:2016-12-18 04:17:36
【问题描述】:
嘿,我将在下面的代码中简要描述我所做的事情: 我创建了一个 ViewStub (Vs) 并将其添加到 RelativeLayout (Rl)。 然后我想在同一个 RL 中添加一个新的 Vs,所以我创建了 stub2 并将其添加到 rl。 然后我参考第一个和第二个 Vs (rlInf1 , rlInf2) 的 Rl (它是 inflatet) 然后我设置 Rl.Layoutparams 使 rlInf2 应该低于 rlInf1 但它们是重叠的。 如何设置 LayoutParams 以使新的 ViewStub 低于旧的? 有什么想法吗?
(我没有在 XML 中添加 ViewStub,而是在 Java-Code 中)
//Löschen des Standard-Tv
TextView tv = (TextView) findViewById(R.id.tvNoContentInfo);
RelativeLayout rl = (RelativeLayout) findViewById(R.id.Layout_ContentInfo);
rl.removeView(tv);
//Erstellen eines ViewStubs
ViewStub stub1 = new ViewStub(this);
//zum richtigen Layout hinzufügen
rl.addView(stub1);
stub1.setLayoutResource(R.layout.routen_navi_infocontent);
//Referenz zum eingefügten Layout herstellen
View inflated = stub1.inflate();
//Zugriff auf Inhalt des zufor referenzierten Layouts
TextView myTextView = (TextView) inflated.findViewById(R.id.tvHeaderInfocontent);
myTextView.setText("hey");
stub1.setId(View.generateViewId());
stub1.setInflatedId(stub1.getId());
RelativeLayout rlInf1 = (RelativeLayout) inflated.findViewById(R.id.Layout_infocontent);
ViewStub stub2 = new ViewStub(this);
//zum richtigen Layout hinzufügen
rl.addView(stub2);
stub2.setLayoutResource(R.layout.routen_navi_infocontent);
//Referenz zum eingefügten Layout herstellen
View inflated2 = stub2.inflate();
RelativeLayout rlInf2 = (RelativeLayout) inflated2.findViewById(R.id.Layout_infocontent);
RelativeLayout.LayoutParams p= new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
p.addRule(RelativeLayout.BELOW,rlInf1.getId());
rlInf2.setLayoutParams(p);
【问题讨论】:
-
如果你马上给它们充气,你需要这些
ViewStubs 做什么? -
我只是测试它...我想要一个动态的一面->也许我第一次需要 2Vs,第二次我需要它 3 次...在我开始使用之前真正的程序我想测试我是否可以将 Vs 定位在另一个 @pskink 下方
-
顺便说一句
LinearLayouts 还不够好?或者为什么不改用RecyclerView? -
什么是 RecyclerView?也许还有另一种可能性来做我想做的事......我有一个 Rl,我必须在运行时“包含”它,有时我必须在前一个 Rl 的下方两次或多次包含相同的 Rl
-
所以先了解ListView,然后再了解RecyclerView
标签: android android-relativelayout layoutparams viewstub