Java 仅显示最后添加的按钮

Java 仅显示最后添加的按钮,java,android,button,android-framelayout,layoutparams,Java,Android,Button,Android Framelayout,Layoutparams,我试图以编程方式将9个按钮添加到FrameLayout中,但只显示最后一个按钮 下面的代码是针对第一个按钮的,我对所有其他按钮都是这样做的,但坐标不同 我想用这些精确的坐标添加每个按钮 对不起,英语不好;) FrameLayout“设计用于屏蔽屏幕上显示单个项目的区域”。最后一个子视图显示在所有早期视图的顶部。如果您希望它们都显示在垂直列表中,则线性布局更适合您尝试执行的操作 编辑:如果您希望它在不同的屏幕大小和分辨率上可靠地工作,您不应该使用像素,您应该使用dps而不是像素来定义xml布局。您

我试图以编程方式将9个按钮添加到
FrameLayout
中,但只显示最后一个按钮

下面的代码是针对第一个按钮的,我对所有其他按钮都是这样做的,但坐标不同

我想用这些精确的坐标添加每个按钮

对不起,英语不好;)

FrameLayout“设计用于屏蔽屏幕上显示单个项目的区域”。最后一个子视图显示在所有早期视图的顶部。如果您希望它们都显示在垂直列表中,则线性布局更适合您尝试执行的操作


编辑:如果您希望它在不同的屏幕大小和分辨率上可靠地工作,您不应该使用像素,您应该使用
dp
s而不是像素来定义xml布局。您可以将根布局设置为相对布局,并为每个按钮定义关系,例如
android:toRightOf=“”

我找到了这个答案,可以解释您的问题:


FrameLayout可能会忽略边距,因为您没有指定重力。尝试添加重力:
rel_btn.gravity=gravity.TOP

我怀疑这里的问题是
堆叠。OP说:
我给你看的代码是第一个按钮的代码,我和其他按钮的代码一样,当然有不同的坐标。
。堆叠听起来和OP描述的问题一模一样,“但只有最后一个显示”是的。除了OP还说他/她对每个
按钮使用不同的坐标。你能详细说明你的应用程序的功能以及为什么你需要精确的基于像素的按钮布局吗?我是初学者,为了学习,我正在尝试制作一个tic-tac-toe。我希望它能在不同分辨率的设备上运行良好。我编辑了我的答案是,如果您希望在不同的屏幕尺寸上运行良好,建议使用基于xml的布局,使用
dp
,而不是像素。
    FrameLayout.LayoutParams rel_btn = new FrameLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    Button button1 = new Button(this);
    button1.setBackgroundResource(R.drawable.empty);
    rel_btn.width = screenWidth/4;
    rel_btn.height = screenWidth/4; 
    rel_btn.leftMargin = screenWidth/8;
    rel_btn.topMargin = screenHeight-1100;              
    button1.setLayoutParams(rel_btn);
    rl.addView(button1);