设置边距时,相对布局中的按钮会被压扁

时间:2018-08-11 21:07:42

标签: java android random android-relativelayout

每次单击按钮时,我都会在相对视图中随机化按钮的位置。我这样做是通过以编程方式更改按钮的边距,如代码所示:

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

        }
    });

在这种情况下,“ buttonIDs []”是我在该类中前面声明的数组,而“ testbtn”是按下该按钮时将我的按钮位置随机化的按钮。

但是,这些特定的边距会产生以下图像

enter image description here

我需要:

enter image description here

有人知道为什么会这样以及如何解决吗?

1 个答案:

答案 0 :(得分:1)

您设置了:

    params.rightMargin = 608; 
    params.leftMargin = 428;

因此,设备必须至少608+428+width of the button宽。是吗?