我很难在我的java代码中将两个文本视图显示在彼此之上。这是我正在尝试的代码:
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
layout = new RelativeLayout(this);
text1 = new TextView(this);
text1.setText("1");
text2 = new TextView(this);
text2.setText("2");
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams q = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
q.addRule(RelativeLayout.BELOW, layout.getId());
text1.setLayoutParams(q);
layout.addView(text1);
p.addRule(RelativeLayout.BELOW,text1.getId());
text2.setLayoutParams(p);
layout.addView(text2);
setContentView(layout);
}
这会将两个文本视图堆叠在同一行,但我希望TextView text2显示在TextView text1下面,所以在我的应用程序中我希望以下内容显示为输出:
1
2
我用“addRule”方法尝试了各种各样的东西,我不知道为什么这不起作用。我想知道如何在没有XML的情况下执行此操作,因为我计划构建一个方法库,可以构建一个可以通过编辑数组轻松调整的布局。
答案 0 :(得分:8)
您的TextViews
没有ID(默认情况下,ID为-1
)...在初始化后将其放入:
text1.setId(1111); // 1111 is just an example,
text2.setId(2222); // just make sure the id are unique
答案 1 :(得分:3)
我认为您不打算在RelativeLayout下面布置text1视图,因为您已将所有视图添加为子视图,对吧?尝试删除第一条规则;该规则要求文本视图低于它所在的视图。
编辑:另外一个帮助是明确设置您正在布置的视图的ID相对于。
所以这里:
text1.setId(2);
p.addRule(RelativeLayout.BELOW,2);
答案 2 :(得分:0)
您可以使用xml布局:
相对布局 你设置第一个textview并为它分配一些id 在下一个文本视图中我们可以分配参数 android:layout_below =“上面文本视图的id” 通过这种方式,我们得到第一个文本视图下面的第二个文本视图