0

我有这段代码,我在其中将某些视图动态添加到 relativeLayout 中。问题是尽管在代码中使用了上述功能,但所有视图都相互重叠。

date=(EditText)findViewById(R.id.Date);
    save=(Button)findViewById(R.id.Save);
    save.setText("Confirm Purchase");
    container=(RelativeLayout)findViewById(R.id.container);

    items[no]=new AutoCompleteTextView(this);
    RelativeLayout.LayoutParams p1=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    p1.addRule(RelativeLayout.ALIGN_PARENT_START);
    items[no].setId(id++);
    container.addView(items[no],p1);
    items[no].setHint("Enter Item");

    quants[no]=new EditText(this);
    RelativeLayout.LayoutParams p2=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    p2.addRule(RelativeLayout.RIGHT_OF, items[no].getId());
    quants[no].setId(id++);
    container.addView(quants[no],p2);
    quants[no].setHint("Quantity");

    rates[no]=new EditText(this);
    RelativeLayout.LayoutParams p3=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    p3.addRule(RelativeLayout.RIGHT_OF, quants[no].getId());
    rates[no].setId(id++);
    container.addView(rates[no], p3);
    rates[no].setHint("Rates");

    totals[no]=new TextView(this);
    RelativeLayout.LayoutParams p4=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    p4.addRule(RelativeLayout.RIGHT_OF, rates[no].getId());
    container.addView(totals[no], p4);
    totals[no].setText("Amount");

请不要让我用 XML 来做。它是一段很长的代码。 截屏

XML:

   <ScrollView android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_weight="2">

 <RelativeLayout android:layout_width="fill_parent"
                 android:layout_height="fill_parent" 
                 android:id="@+id/container">



  </RelativeLayout>

</ScrollView>
4

2 回答 2

0

1.您需要 xml 来为您的控制器定义所有“id”。我没有尝试在没有 ids.xml 的情况下直接在代码中使用 id。
2.您可以使用 LinearLayout 而不是 RelativLayout。

于 2013-08-14T07:39:04.810 回答
0

除了使用RelativeLayout,您可以尝试使用LinearLayout它来放松,而不是考虑新添加项目的相对位置。您只需LinearLayout分配orientation属性,以便您的元素以适合您项目的方向显示

于 2013-08-14T07:27:29.157 回答