两天来,我一直在尝试建立一个可缩放到屏幕大小的图像网格。我想根据百分比约束来制作网格,这样就不必对任何特定大小进行硬编码,并且图像会自动缩小到与之关联的视图的大小。
我尝试的第一件事是GridLayout,对每行中的视图数进行特定限制。但是,当我将图像放进去时,这些行将离开屏幕。如果那行不通,我尝试了一系列准则,并用Java创建视图。然后,我还要将视图的内容限制在Java中。尽管视图完全受到约束,但是所有这些仍然会被放置在视图中的图像大小所覆盖。
for(int y = 0; y < 9; y++)
{
buttons.add(new ArrayList<ImageButton>());
for(int x = 0; x < 9; x++)
{
//create the button, and assign it's image to it
ImageButton imageButton = new ImageButton(SimulationActivity.this);
imageButton.setImageResource(R.drawable.ant01);
imageButton.setId(View.generateViewId());
constraintLayout.addView(imageButton);
buttons.get(y).add(imageButton);
//add the constraints for the button
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(constraintLayout);
constraintSet.connect(imageButton.getId(), ConstraintSet.LEFT, guidelines.get(x).getId(), ConstraintSet.RIGHT, 0);
constraintSet.connect(imageButton.getId(), ConstraintSet.RIGHT, guidelines.get(x + 1).getId(), ConstraintSet.LEFT, 0);
constraintSet.setDimensionRatio(imageButton.getId(), "1:1");
if(y == 0)
{
constraintSet.connect(imageButton.getId(), ConstraintSet.TOP, upButton.getId(), ConstraintSet.BOTTOM, 8);
}
else
{
constraintSet.connect(imageButton.getId(), ConstraintSet.TOP, buttons.get(y - 1).get(0).getId(), ConstraintSet.BOTTOM,0);
}
constraintSet.applyTo(constraintLayout);
}
}
运行此命令后,我得到的是图像以全尺寸显示,并且一行中的所有图像都相互重叠以试图停留在屏幕上。如果最左边的图像从最左边的基准线开始,最右边的图像在最右边的基准线结束,这对我来说很有意义,但是它们一直到边缘。如何获得按钮以遵守为它们设置的约束,并将图像缩小到这些约束的大小?