我在main.xml中定义了RelativeLayout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
</RelativeLayout>
在onCreate中以编程方式添加TextView和EditText:
public void onCreate(Bundle savedInstanceState){
setContentView(R.layout.main);
addContentView(customGlView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
addContentView(myTextView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
addContentView(myEditText, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}
它们都出现,但在左上角重叠。我花了好几个小时来弄清楚如何将它们放在彼此下方,或者在屏幕的左角放置一个,在右角放置另一个。如果我通过main.xml添加它们,它们都不会显示出来。任何人都可以给我一个正确方向的暗示吗?
答案 0 :(得分:2)
对于RelativeLayout
,您需要使用LayoutParams
指定元素的相对位置:
myTextView.setId(1);
myEditText.setId(2);
addContentView(myTextView, new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
final RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)
params.addRule(RelativeLayout.BELOW, myTextView.getId());
addContentView(myEditText, params);
答案 1 :(得分:1)
向LayoutParams添加一条规则,将一个textview设置在另一个之下..
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
TextView tv1 = new TextView(this);
tv1.setId(1);
tv1.setText("myTextView");
params1.addRule(RelativeLayout.BELOW, tv1.getId());
TextView tv2 = new TextView(this);
答案 2 :(得分:0)
我无法通过RelativeLayout解决此问题,但使用LinearLayout完全符合您的要求。
addView(myEditText);
或者您可以使用this method将它们添加到您想要的任何位置。例如,您可以先添加myEditText然后在myEditText上面添加myTextView:
addView(myEditText);
addView(myTextView, 0);