【问题标题】:Why setMinimumHeight and setMinimumWidth do not change the size of image?为什么 setMinimumHeight 和 setMinimumWidth 不改变图像的大小?
【发布时间】:2013-01-05 00:01:04
【问题描述】:

我正在制作一个益智游戏,我必须同时在屏幕上显示 16 个图像 (4 X 4)。我正在尝试设置图像的高度和宽度,但高度和宽度的值没有改变图像大小。此外,只出现了 4 张图像而不是 16 张图像。我正在使用以下代码来显示图像:

   public void display()
    {
        LinearLayout llMain = new LinearLayout(this);
        for(int i=0;i<4;i++)
        {
            LinearLayout llRow = new LinearLayout(this);
            for(int j=i*4;j<tiles.length/4;j++)
            {
                ImageView iv = new ImageView(this);
                iv.setImageBitmap(tiles[j]);
                iv.setAdjustViewBounds(true);
                iv.setMaxHeight(tileHeight);
                iv.setMaxWidth(tileWidth);
                iv.setMinimumHeight(tileHeight);
                iv.setMinimumWidth(tileWidth);
                LayoutParams params =  new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                iv.setLayoutParams(params);
                llRow.addView(iv);
            }
            llMain.addView(llRow);
        }
        setContentView(llMain);
}

谁能告诉我我做错了什么?

提前致谢

【问题讨论】:

  • 我认为您需要将LinearLayouts 之一更改为垂直方向。 llMain.setOrientation(LinearLayout.VERTICAL);
  • 我看到的下一个问题是你的循环计数器。当 i==0 时,您从 j=0 变为 j=4;当 i==1 时,您从 j=4 变为 j=4;当 i==2 你从 j=8 到 j=4... 你想要 for (int j=0; j&lt;4; ++j) 和 iv.setImageBitmap(tiles[i*4 + j])。
  • 那么,setminimumWidth 对你有用吗?如果你有任何解决方案,请分享

标签: android android-layout imageview android-image


【解决方案1】:

尝试使用 LinearLayout 的 layout_weight 属性将屏幕划分为您需要的部分。您为不同部分设置的值的比率会使部分变大或变小。

【讨论】:

  • 抱歉,您能详细说明一下吗?如何使用 layout_weight 属性而不是什么?
  • 我假设您的图像视图位于 LinearLayout 中。因此,您可以使用线性布局的 Layout_width 属性按照所需的比例将父布局(在这种情况下为线性布局)与子布局(在这种情况下为 Imageviews)分开。此属性必须在 xml 中实现。检查stackoverflow.com/questions/3084185/…stackoverflow.com/questions/3995825/…
  • 谢谢,但还是有一个问题,我必须动态进行。图像的数量可能会根据级别选择而有所不同。如果我在 xml 中这样做,那么我以后不能更改它
  • 你可以通过 LinearLayout l = ((LinearLayout)(findViewById(R.id.LinearLayout01)));然后运行一个for循环以在运行时生成指定数量的图像视图,for循环中的最后一行将图像视图添加到线性布局中,如下所示 l.addView(i); (这里 i 是动态创建的图像视图。)
  • 因此,在这种情况下,您只需在 xml 中定义 LinearLayout,并且可以在 for 循环中为图像视图设置 layout_weight 属性。
猜你喜欢
  • 2015-08-31
  • 1970-01-01
  • 2013-12-07
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多