如何阻止图像变得超出视图限制

时间:2019-05-01 04:10:09

标签: java android android-layout

两天来,我一直在尝试建立一个可缩放到屏幕大小的图像网格。我想根据百分比约束来制作网格,这样就不必对任何特定大小进行硬编码,并且图像会自动缩小到与之关联的视图的大小。

我尝试的第一件事是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);
    }
}

运行此命令后,我得到的是图像以全尺寸显示,并且一行中的所有图像都相互重叠以试图停留在屏幕上。如果最左边的图像从最左边的基准线开始,最右边的图像在最右边的基准线结束,这对我来说很有意义,但是它们一直到边缘。如何获得按钮以遵守为它们设置的约束,并将图像缩小到这些约束的大小?

Here is a screenshot of what I currently get

Here is more what I am going for (except not with little android icons, obviously, not to mention without the gaps between the buttons)

0 个答案:

没有答案