Search code examples
androidandroid-relativelayout

RelativeLayout addRule not working


Guys I have a cardview and I want to add 2 button on it with rule but addRule() method is not working. In the picture, figure A is occurring but I want to make figure B, I mean, I want the buttons set align_parent_right and align_parent_bottom and the second button adjacent to first one. When I run it, figure A occuring. Any suggestions?

enter image description here

RelativeLayout.LayoutParams rl= (RelativeLayout.LayoutParams) iView.getLayoutParams();        
RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams(width/4,height/5);
RelativeLayout.LayoutParams lparams2 = new RelativeLayout.LayoutParams(width/4,height/5);

removeButton=new Button(mContext);
modifyButton=new Button(mContext);

lparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lparams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

cardView.setLayoutParams(rl);

cardView.addView(removeButton,lparams);
cardView.addView(modifyButton,lparams2);

Solution

  • Try this:-

     RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.mainLayout);
    
            CardView cardView = new CardView(this);
            ViewGroup.LayoutParams cardParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            cardView.setLayoutParams(cardParams);
            mainLayout.addView(cardView);
    
            RelativeLayout relativeLayout = new RelativeLayout(this);
            ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            relativeLayout.setLayoutParams(layoutParams);
            cardView.addView(relativeLayout);
    
            LinearLayout linearLayout = new LinearLayout(this);
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
            linearLayout.setLayoutParams(params);
            linearLayout.setOrientation(LinearLayout.HORIZONTAL);
            linearLayout.setGravity(Gravity.RIGHT);
            relativeLayout.addView(linearLayout);
    
            Button removeButton = new Button(this);
            Button modifyButton = new Button(this);
    
            removeButton.setText("Remove");
            modifyButton.setText("Modify");
    
            linearLayout.addView(removeButton);
            linearLayout.addView(modifyButton);