Android中的AbsoluteLayout的替代方案是什么?
我看到一些帖子说FrameLayout是另一种选择,我应该使用边距来定位东西(这让我觉得非常违反直觉,但没关系……如果它奏效,我就接受它)。然而,我无法让它工作,所以,我正在寻求帮助 这是我的密码Android中的AbsoluteLayout的替代方案是什么?,android,Android,我看到一些帖子说FrameLayout是另一种选择,我应该使用边距来定位东西(这让我觉得非常违反直觉,但没关系……如果它奏效,我就接受它)。然而,我无法让它工作,所以,我正在寻求帮助 这是我的密码 FrameLayout layout = new FrameLayout(this); layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
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的LayoutParam以填充父对象时,按钮将被拉伸以占据整个屏幕(这是有意义的)
你如何让它在屏幕上的其他地方画画,而不管屏幕上还有什么
像往常一样,超级提前感谢
[编辑]
看来我的问题并不完全清楚(给出了答案),所以
在上面的代码中,目的是创建一个按钮,将其传递给布局,并使其在屏幕上以100100绘制
我知道这在不同的设备上可能意味着不同的事情。我同意。我只需要一种方式,通过编程,在运行时,将项目放置在特定位置。我不想依赖重力(或热力学定律)。我只想指定一个位置,让元素出现在那里:)布局的最终目标是什么?如果您只需要一个按钮——比如说,在屏幕中央,您可以使用以下按钮进行布局:
<RelativeLayout
android:xmlns="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
>
<Button
android:id="@+id/the_button"
android:layout_width="wrap_content"
android:layout_height = "wrap_content"
android:text="@string/the_button_text"
/>
</RelativeLayout>
AbsoluteLayout是个坏主意,因为您需要支持大量的屏幕分辨率。一个屏幕上的100像素可能是一半,而在dpi较高的设备上,屏幕上的100像素可能不到四分之一 有关不同可用布局的详细说明,请访问
从你的描述中,我不完全理解你想要完成什么(你想覆盖内容吗?),也许这里的视觉示例可以帮助你理解布局是如何工作的,以及如何在布局上定位内容。正如许多人指出的,在屏幕上设置一个绝对像素位置的按钮是一个非常糟糕的主意,而且在所有可用的安卓手机上都不起作用。我相信有更好的方法来实现你想要的布局 但是,要回答问题:要在运行时定位它,可以使用AbsoluteLayout.LayoutParms
AbsoluteLayout absoluteLayout = //get absolute layout
Button button = new Button();
AbsoluteLayout.LayoutParms params = absoluteLayout.generateDefaultLayoutParams();
params.x = 100;
params.y = 100;
absoluteLayout.addView(button, params);
我一次又一次地看到这个答案。。。我明白了。。。屏幕大小不一。但这非常令人沮丧。我不是在寻求解决我问题的替代方案。。。我在寻求解决办法!我不要按钮在中间。根据设计,我想把它放在一个特定的地方。我有一个图形设计,要求按钮位于特定的X和Y位置。我对屏幕大小的多样性很满意。我愿意使用AbsoluteLayout(我知道它已被弃用)。。。我只想得到答案:)如果你认为任何编程问题都只有一个答案,那么也许你应该做些别的事情。你的问题标题就是在寻求另一个答案。您希望它位于相对于屏幕左上角的特定x,y坐标中吗?是否希望它位于相对于布局中另一个对象的x、y坐标中?如果你真的下定决心要使用AbsoluteLayout,那就去吧,但这不是正确的方法。。。我的意思是,没有人回答真正的问题。基本上,答案总是“为什么不做点别的”。我很清楚有很多方法可以剥山羊的皮。。。我只是要求1,但我想剥一只山羊的皮,而不是给小猫挤奶。“我有一个图形设计,要求按钮位于特定的X和Y位置。”--然后修改设计。好的,你看到在链接中他们如何将FrameLayout和AbsoluteLayout描述为有一个android:Layoutx param?编译器无法识别layoutX或LAYOUX或与FRAMELLAYOUT或AbsoluteLayout关联的任何内容。所以,我试图做的只是在运行时将一个元素定位到一个特定的位置,我没有看到任何方法可以做到这一点。我尝试了你的代码,按钮位于左上角的(100100)。也许这是安卓系统更高版本中修复的一个bug。我刚刚发布了一个库,可能对这个案例感兴趣。github.com/ManuelPeinado/ImageLayout