我看到一些帖子说FrameLayout是替代方案,我应该使用边距来定位元素(这让我感到非常反直觉,但好吧...如果它能工作,我会接受它)。然而,我无法使其正常工作,所以我正在寻求帮助。
以下是我的代码:
FrameLayout layout = new FrameLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
Button btn = new Button(this);
btn.setBackgroundResource(R.drawable.btn);
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.setMargins(100,100,100,100);
btn.setLayoutParams(lp); //i've tried with and without this line, no change
layout.addView(btn , lp);
无论我做什么,该按钮都会被绘制在0,0处。当我将布局参数(lp's LayoutParam)更改为FILL_PARENT时,按钮就会被拉伸以占据整个屏幕(这是有道理的)。如何使它在屏幕上的其他位置绘制出来,而与其他内容无关呢?在代码中,我的意图是创建一个按钮,将其传递给布局,并在屏幕的100,100处绘制它。我知道这可能在不同的设备上意味着不同的事情,但我需要一种在运行时以编程方式将项放置在特定位置的方法。我不想依赖于重力(或热力学定律)。我只想指定一个位置并让元素出现在那里 :)