Laser
Laser

Reputation: 6960

Adding element to RelativeLayout in Onclick method

I've following code, which add textCheckedView into relative layout:

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;
    }

}

But I've a problem with adding CustomCheckedTextView into RelativeLayout after clicking on Button. I mean that everything is added successfully but all in one place. How can I add elements below than previous programmatically?

Upvotes: 0

Views: 453

Answers (1)

Deepanker Chaudhary
Deepanker Chaudhary

Reputation: 1704

You can understand it like this:---

Suppose you want to create Two TextView & want to put below one textview to another:--

    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); relative .addView(proposalA); // add textview in your main relative layout Now you want to put (textview)proposalB below on textview(ProposalA) then:- for 2nd TextView under 1st TextView use addRule Like this:---

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

Upvotes: 1

Related Questions