每次单击按钮时,我都会随机化相对 View 上按钮的位置。我通过以编程方式更改按钮的边距来实现此目的,如代码所示:
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”是按下时随机化按钮位置的按钮。
但是,这些特定边距会产生以下图像
我需要:
有谁知道为什么会发生这种情况以及如何解决它?
最佳答案
您设置:
params.rightMargin = 608;
params.leftMargin = 428;
因此设备宽度必须至少为608+428+按钮宽度
。是吗?
关于java - 设置边距时,相对布局中的按钮会被压扁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51803762/