Android - 布局不居中

时间:2014-01-08 19:43:13

标签: android android-layout android-linearlayout android-imageview

我很困惑,这应该是中心,但事实并非如此。

public void addTableImage(String imageName, LinearLayout L){

    ImageView newImage = new ImageView(c);
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(150, 150);
    newImage.setLayoutParams(layoutParams);

    int id = c.getResources().getIdentifier(imageName, "drawable", c.getPackageName());
    RelativeLayout l1 = new RelativeLayout(c);
    l1.setLayoutParams(new RelativeLayout.LayoutParams(400, 160));
    l1.setBackgroundColor(Color.WHITE);
    l1.setGravity(Gravity.CENTER);

    newImage.setImageResource(id); 
    l1.addView(newImage);
    L.addView(l1);
}

我得到了这个结果:

enter image description here

图像显示正常(是的,它只是一个占位符绿色框),背景已设置,所有内容都设置为Gravity.CENTER,但它仍然是左对齐。

奖励积分:任何人都知道为什么“提出问题”现在会自动填写您最后一个问题的信息?这有点令人困惑,让我觉得我实际上正在编辑一个旧问题。

1 个答案:

答案 0 :(得分:2)

将您的代码更改为:

public void addTableImage(String imageName, LinearLayout L){

    ImageView newImage = new ImageView(c);
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(150, 150);
    newImage.setLayoutParams(layoutParams);

    int id = c.getResources().getIdentifier(imageName, "drawable", c.getPackageName());
    RelativeLayout l1 = new RelativeLayout(c);
    LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(400, 160);
    lp.gravity=Gravity.CENTER;

    l1.setLayoutParams(lp);
    l1.setBackgroundColor(Color.WHITE);
    l1.setGravity(Gravity.CENTER);

    newImage.setImageResource(id); 
    l1.addView(newImage);
    L.addView(l1);
}

通过将相对布局的重力设置为居中,您的图像在相对布局内居中。

但是要将相对布局本身设置为Linearlayout的中心,您需要将布局重力设置为相对布局的中心,将LinearLayout的中心或重力设置为居中。 您可以尝试上面应该运行的代码。