2013-06-24 4 views
0

Я следующий код, который добавить textCheckedView в относительной макете:Добавление элемента к RelativeLayout в методе OnClick

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main_activity); 


     final RelativeLayout rlayout = (RelativeLayout) findViewById(R.id.relativeLayout1); 

     final RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
     p.addRule(RelativeLayout.ALIGN_PARENT_TOP); 

     final Button button = (Button) findViewById(R.id.button1); 
     button.setOnClickListener(new View.OnClickListener() { 
      int ids=0; 
      public void onClick(View v) { 


       String test ="test"; 
       ids++; 

       final AlarmCheckedTextView checkedTV = createButton(test,ids); 
       checkedTV.setVisibility(1);  
       p.addRule(RelativeLayout.BELOW,checkedTV.getId()); 

       rlayout.addView(checkedTV,p); 
      } 
     }); 


    } 




    private CustomCheckedTextView createButton(String text, int id) 
    { 
     final CustomCheckedTextView checkedTV = new CustomCheckedTextView(this,text); 
     checkedTV.setId(id); 
     return checkedTV; 
    } 

} 

Но я имею проблему с добавлением в RelativeLayout после нажатия на Button. Я имею в виду, что все добавляется успешно, но все в одном месте. Как я могу добавить элементы ниже, чем предыдущие программно?

+0

это может помочь ..... http: //stackoverflow.com/questions/4394293/create-a-new-textview-programmatically-then-display-it-below-another-textview – ASP

ответ

1

Вы можете понять, как это: ---

Предположим, вы хотите создать два TextView & хотят поставить под одной TextView другому: -

RelativeLayout relative = new RelativeLayout(this); 
       TextView proposalA = new TextView(this); 
       proposalA.setText("Proposal A:-"); 
       proposalA.setTextColor(Color.BLACK); 
       proposalA.setId(R.id.propasal_a);//set id for this TextView you can put unique id for every content in your string folder otherwise you can set id like this: tv1.setId((int)System.currentTimeMillis()); 
       proposalA.setTextSize(16); 
       proposalA.setTypeface(Typeface.DEFAULT_BOLD); 
       RelativeLayout.LayoutParams relative_params_a = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); 
       relative_params_a.setMargins(20, 6, 0, 0); 

proposalA.setLayoutParams (relative_params_a) ; относительный .addView (OfferA); // добавить TextView в основной относительной макете Теперь вы хотите поставить (TextView) proposalB ниже на TextView (ProposalA), а затем: - для 2-го TextView под 1 TextView использовать addRule Как это: ---

  TextView proposalB = new TextView(this); 
      proposalB.setText("Proposal B:-"); 
      proposalB.setTextColor(Color.BLACK); 
      proposalB.setId(R.id.propasal_b); 
      proposalB.setTextSize(16); 
      proposalB.setTypeface(Typeface.DEFAULT_BOLD); 
      RelativeLayout.LayoutParams relative_params_b = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); 
      relative_params_b.addRule(RelativeLayout.BELOW,proposalA.getId()); 

      relative_params.setMargins(20, 6, 0, 0); 
      proposalB.setLayoutParams(relative_params_b); 
     relative .addView(proposalB);