![](/img/trans.png)
[英]How can I dynamically add layouts and views to an Android XML layout file?
[英]How can I add Views dynamically in a Relative layout or in any Layout
好吧,我的问题有点复杂(对我来说)。 假设我有一个RelativeLayout
Layout
(或任何其他需要的Layout
)。
现在我制作了一些像TextView
View
。(多个View
)。 这些View
将包括我将从 Java 代码中给出的以下特征。
View
添加到特定位置的布局。View
可以重叠(如下图) 其中 positionX 将是一个整数,定义View
将在Layout
从顶部设置的位置。
现在我想将这些View
添加到Layout
,如下图所示。
(所有View
都是矩形大小;抱歉编辑不好。)
我怎样才能做到这一点? 我非常需要解决方案。
我希望我已经用我糟糕的英语解释了我的问题:(
提前致谢 <3 <3
正如你所提到的,
所有视图都将是矩形大小
所以让我们以一个按钮yourButton
为例。 您需要传递两个值,一个来自顶部,一个来自您想要放置视图的左侧。 然后使用以下方法,如您所愿addView()
在RelativeLayout
实现所需的输出:
private void addView(child, positionFromTop, positionFromLeft, width, height) {
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.topMargin = (int)(positionFromTop);
layoutParams.leftMargin = (int)(positionFromLeft);
yourButton.setLayoutParams(layoutParams);
}
如果需要,您可以以类似的方式以编程方式使用宽度和高度自定义布局。 请参阅此答案以获取有关如何以编程方式调整自定义视图大小的代码。 希望能帮助到你!
尝试这个:
//-----Main Layout-----\\
LinearLayout l1 = findViewById(R.id.myLinear);
ll.setOrientation(LinearLayout.VERTICAL);
//-----First layout-----\\
LinearLayout l11 = new LinearLayout(this);
l11.setBackgroundColor(android.R.color.holo_orange_dark);
l1.addView(l11, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
//-----Second layout-----\\
LinearLayout l12 = new LinearLayout(this);
l12.setBackgroundColor(android.R.color.holo_green_dark);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(-30, 20, 20, 0); //Negative margin top to superposition views
l1.addView(l12, layoutParams);
如果您想动态添加多个视图,可以尝试将它们重构为一个复合视图(定位它们会更容易)
https://www.vogella.com/tutorials/AndroidCustomViews/article.html
您使用什么类型的 ViewGroup? 如果其约束布局,您可以使用 ConstraintLayout.LayoutParams 以与提到的 SaadAAkash 相同的方式以编程方式设置约束
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.