繁体   English   中英

如何在相对布局或任何布局中动态添加视图

[英]How can I add Views dynamically in a Relative layout or in any Layout

好吧,我的问题有点复杂(对我来说)。 假设我有一个RelativeLayout Layout (或任何其他需要的Layout )。

现在我制作了一些像TextView View 。(多个View )。 这些View将包括我将从 Java 代码中给出的以下特征。

  1. 我想将View添加到特定位置的布局。
  2. 两个或多个View可以重叠(如下图)
  3. 它是一种 AddView(child, positionX, width, height); 我知道没有这样的方法。 但我需要一个。

其中 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);
}

如果需要,您可以以类似的方式以编程方式使用宽度和高度自定义布局。 请参阅此答案以获取有关如何以编程方式调整自定义视图大小的代码。 希望能帮助到你!

也可以使用google提供的FlexBox布局动态添加视图。 您可以查看这篇Medium文章,了解有关 Flexbox 布局的清晰概念

尝试这个:

//-----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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM