2013-08-14 3 views
0

У меня есть этот код, в котором я добавляю определенные представления динамически в relativeLayout. Проблема заключается в том, что, несмотря на использование вышеупомянутой функции в коде, все представления перекрываются друг с другом.relativeLayout.rightOf не работает должным образом

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"); 

PlZ не просите меня сделать это в формате XML. Это кусок длинного кода. screenshot

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> 
+0

Вы можете опубликовать снимок экрана? –

+0

Почему бы не сделать это в XML? – Giant

+0

Почему бы не сделать это в xml и использовать 'LayoutInflater', чтобы добавить его динамически? –

ответ

0

Вместо использования RelativeLayout, вы можете попробовать использовать LinearLayout вместо, с которым вы бы расслабиться и не думать об относительных положениях вновь добавленных элементов. с LinearLayout вам нужно просто присвоить orientation объект, чтобы ваши элементы были отображены в ориентации, подходящей для вашего проекта.

+0

Да, я мог, но мне нужно добавлять виды как по горизонтали, так и по вертикали. В то время как linearLayout позволяет мне делать это определенным образом – kayveesin

+0

@kayveesin сделать два макета –

+0

см., Я должен добавить 4 представления каждый раз, когда пользователь обращает внимание на последний вид последней строки. Поэтому, соответственно, я не могу раздувать макет каждый раз. Это сделает приложение слишком медленным. – kayveesin

0

1.Вы нуждаетесь в xml, чтобы определить все «id» для ваших контроллеров. Я не пытаюсь использовать id в кодах непосредственно без ids.xml.
2. Вы можете использовать LinearLayout вместо RelativLayout.

+0

извините, но я не мог получить u – kayveesin

Смежные вопросы