仅显示最后添加的按钮

时间:2014-08-14 21:12:02

标签: java android button android-framelayout layoutparams

我正在尝试以编程方式将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);

2 个答案:

答案 0 :(得分:1)

FrameLayout"旨在阻挡屏幕上的某个区域以显示单个项目"。最后一个子视图显示在所有早期视图的顶部。如果您希望它们全部显示在垂直列表中,则LinearLayout将更适合您要执行的操作。

编辑:如果您希望它在不同的屏幕尺寸和分辨率上可靠地工作,您不应该使用像素,则应使用dp而不是像素在xml中定义布局。您可以将根布局设为RelativeLayout,并为每个按钮定义关系,例如android:toRightOf="<id of button>"

答案 1 :(得分:1)

我找到了可以解释您问题的答案:FrameLayout margin not working

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