编辑使用linearLayout创建的Android按钮的位置

时间:2014-01-16 22:24:55

标签: android android-linearlayout

我正在尝试动态创建按钮,它们的大小和位置各不相同。 我有代码来创建一个不同大小的按钮,但我坚持改变位置。 我正在使用linearlayout并尝试使用setMargins来移动按钮,但它似乎正在改变按钮内的边距。我的代码如下:

public void button(int a, int b) {

    newButton = new Button(this);
    newButton.setText("HELLO");

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.FILL_PARENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);

    layoutParams.setMargins(0, 0, 0, 0); 

    ViewGroup.LayoutParams params = layout.getLayoutParams();
    params.width = a;
    params.height = b;
    layout.requestLayout();

    layout.addView(newButton, layoutParams);

}

这是我对此的表现:

 <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_marginTop="58dp"
    android:layout_toRightOf="@+id/textView1"
    android:text="Button" />

  <LinearLayout
    android:id="@+id/layout"
    android:layout_width="50sp"
    android:layout_height="40sp"
    android:orientation="vertical" >
  </LinearLayout>

2 个答案:

答案 0 :(得分:1)

您了解LinearLayout是什么以及您使用它的原因是什么?布局的每个孩子都会到位。如果我有一个垂直的LinearLayout,它有3个孩子,它们将在彼此之上。我可以改变他们的引力,使他们被吸引到不同的边缘但是“改变”它的位置是不可能的,这取决于你所说的“改变”。

查看其他布局。您可能想要使用RelativeLayout。

答案 1 :(得分:0)

为什么不使用button.setX(float x)和button.setY(float y)?您需要使用RelativeLayout而不是LinearLayout。它更容易,但它只能在api 11 ...

之后才能使用