samedi 11 août 2018

Button in Relative Layout gets squished when setting margins

I am randomizing the location of a button on a Relative View everytime a button is clicked. I am doing this by changing the margins of the buttons programatically as shown in the code:

 Button testbtn = findViewById(R.id.testbtn);
    testbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            //Get Screen size
            DisplayMetrics metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);

            //Save dimensions in variables
            int widthScreen = metrics.widthPixels;
            int height = metrics.heightPixels;
            TextView width_height = findViewById(R.id.width_height);


            //Declare random
            Random randomDimension = new Random();

            //Declare layout params
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
            params.rightMargin = 608; 
            params.leftMargin = 428; 
            params.topMargin = randomDimension.nextInt(height) +1;
            //params.setMargins();
            buttonIDs[1].setLayoutParams(params);

            width_height.setText(params.leftMargin+" "+params.rightMargin);

        }
    });

In this case, "buttonIDs[]" is an array i declared earlier in the class and "testbtn" is the button that when pressed, randomizes the position of my button.

However, these specific margins produce the following image

enter image description here

and I need:

enter image description here

Does anyone know why this is happening and how to fix it?




Aucun commentaire:

Enregistrer un commentaire