我正在尝试以编程方式将9个按钮添加到FrameLayout
,但只显示最后一个按钮。
下面的代码用于第一个按钮,我对所有其他按钮的操作类似,但坐标不同。
我想用这些精确的坐标添加每个按钮。
抱歉英语不好;)
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);
答案 0 :(得分:1)
FrameLayout"旨在阻挡屏幕上的某个区域以显示单个项目"。最后一个子视图显示在所有早期视图的顶部。如果您希望它们全部显示在垂直列表中,则LinearLayout将更适合您要执行的操作。
编辑:如果您希望它在不同的屏幕尺寸和分辨率上可靠地工作,您不应该使用像素,则应使用dp
而不是像素在xml中定义布局。您可以将根布局设为RelativeLayout,并为每个按钮定义关系,例如android:toRightOf="<id of button>"
答案 1 :(得分:1)
我找到了可以解释您问题的答案:FrameLayout margin not working
FrameLayout可能会忽略边距,因为您没有指定重力。尝试添加引力:rel_btn.gravity = Gravity.TOP;