Java 在android中,如何在不重叠的情况下将文本视图数组添加到相对布局中?
我正在寻找一个解决方案,以解决我的问题,我的所有文本视图重叠自己,当被添加到相对布局。事实上,我需要把它们放在每一个后面。其他我已经读过的答案,我遵循它们,但没有什么可以解决它。有人能告诉我哪里做错了吗 这是我的密码:Java 在android中,如何在不重叠的情况下将文本视图数组添加到相对布局中?,java,android,android-relativelayout,Java,Android,Android Relativelayout,我正在寻找一个解决方案,以解决我的问题,我的所有文本视图重叠自己,当被添加到相对布局。事实上,我需要把它们放在每一个后面。其他我已经读过的答案,我遵循它们,但没有什么可以解决它。有人能告诉我哪里做错了吗 这是我的密码: for (int i=0;i<parts.length;i++) { valueTV[i] = new TextView(this); valueTV[i].setText(parts[
for (int i=0;i<parts.length;i++)
{
valueTV[i] = new TextView(this);
valueTV[i].setText(parts[i]);
valueTV[i].setId(i);
valueTV[i].setWidth(300);
RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams
(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
linearLayout_Skills.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
}
linearLayout_Skills.setBackgroundColor(getResources().getColor(R.color.blue));
if(i>=1)
{
lparams.addRule(RelativeLayout.END_OF, valueTV[i-1].getId());
valueTV[i].setLayoutParams(lparams);
}else {
lparams.addRule(RelativeLayout.ALIGN_PARENT_START);
valueTV[i].setLayoutParams(lparams);
}
linearLayout_Skills.addView(valueTV[i]);
}
for(inti=0;i=Build.VERSION\u code.JELLY\u BEAN\u MR1){
linearLayout\u Skills.setLayoutDirection(视图.布局方向\u RTL);
}
linearLayout_Skills.setBackgroundColor(getResources().getColor(R.color.blue));
如果(i>=1)
{
lparams.addRule(RelativeLayout.END_OF,valueTV[i-1].getId());
valueTV[i].setLayoutParams(LPARAM);
}否则{
lparams.addRule(RelativeLayout.ALIGN\u PARENT\u START);
valueTV[i].setLayoutParams(LPARAM);
}
线性布局_Skills.addView(valueTV[i]);
}
XML代码:
<RelativeLayout
android:id="@+id/linearSkills"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="rtl"
android:paddingTop="5dp"
</RelativeLayout>
您可以使用相对布局
这就是主要思想,首先定义关系布局
//layout variable is your relative layout
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
layout.setLayoutParams(layoutParams);
然后像这样定义一个param变量
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
TextView tv2 = new TextView(this);
params1.addRule(RelativeLayout.BELOW, tv1.getId());
tv2.setId(2);
tv2.setText("textView2");
之后,使用id定义textView(在本例中,该id可以是其在数组中的位置)
下一个textView将这样声明
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
TextView tv2 = new TextView(this);
params1.addRule(RelativeLayout.BELOW, tv1.getId());
tv2.setId(2);
tv2.setText("textView2");
最后,使用定义的参数设置视图
layout.addView(tv2, params1);
这是一个完整的示例,您可以检查FlexboxLayout似乎更适合此任务。您能告诉我一种使用我的相对布局解决此问题的方法吗?可能重复谢谢,但我想这就是我在代码中所做的吗?不是吗?你没有设置下面的属性,你设置的是ALIGN\u PARENT\u START这就是它们重叠的原因如果你查看我的情况,第一个文本视图设置为START,下一个文本视图设置为上一个文本视图的末尾