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

时间:2015-05-05 14:07:13

标签: android layout

我有一个包含布局的活动。我在此布局中设置了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"编译器不允许它。

1 个答案:

答案 0 :(得分:0)

在另一个帖子中找到了答案。这是我的最终代码:

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。

完美地工作;)