使用代码设置图像布局(Android Studio)

Setting image layouts using code (Android Studio)

我有一个 activity,其中包含布局。我在此布局中设置并隐藏(不可见)了 10 个图像按钮。我正在尝试以编程方式将图像加载到这些图像按钮,然后设置它们在屏幕上的位置。

我找到了之前的讨论:How to set margin of ImageView using code, not xml

但是,这不起作用。尽管设置了高度和宽度参数,但我得到的图像按钮很小。这是我的代码:

RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(btnGP1.getLayoutParams());
            lp1.leftMargin = P1leftValue;
            lp1.topMargin = P1topValue;
            lp1.height = 80;
            lp1.width = 80;
            btnGP1.setLayoutParams(lp1);

这有些不对,但我没有运气找到更准确的资源。有什么想法吗?

更新:

我已将我的代码编辑为:

            RelativeLayout.LayoutParams lp1 = (RelativeLayout.LayoutParams)btnGP1.getLayoutParams();
            lp1.leftMargin = P1leftValue;
            lp1.topMargin = P1topValue;
            lp1.height = 280;
            lp1.width = 280;
            btnGP1.setLayoutParams(lp1);

它似乎几乎可以正常工作。现在唯一剩下的就是上面的函数似乎只允许我输入像素大小。我需要能够输入像素密度,因为并非所有屏幕尺寸都相同。

我的新问题是:我该怎么做?这里有一个简单的答案吗?如果我尝试 280dp 或“280dp”,编译器将不允许。

这个问题的答案是在另一个线程中找到的。这是我的最终代码:

final float SCALE = getResources().getDisplayMetrics().density;
RelativeLayout.LayoutParams LP = new RelativeLayout.LayoutParams(btnGP15.getLayoutParams());
                LP.leftMargin = (int) (P1leftValue * SCALE + 0.5f);
                LP.topMargin = (int) (P1topValue * SCALE + 0.5f);
                LP.height = (int) (tileSize * SCALE + 0.5f);
                LP.width = (int) (tileSize * SCALE + 0.5f);

其中 btnGP15 是我的图像,P1leftValue 和 P1topValue 存储我所需位置的 dp 值,例如 100 和 150。 tileSize 存储我的图像大小的 dp 值,在我的例子中是 70。

工作完美 ;)