Android以编程方式添加的按钮具有匹配父级宽度和高度

时间:2014-09-10 19:44:14

标签: java android

我正在尝试添加此按钮

        Button dalsi_akce = new Button(this);
        dalsi_akce.setGravity(Gravity.CENTER);
        RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);
        dalsi_akce.setLayoutParams(p);
        setContentView(dalsi_akce);
        dalsi_akce.setText("test");
出现

按钮但完全匹配父级。我在整个显示屏上都有这个按钮。如何设置按钮的宽度和高度?

3 个答案:

答案 0 :(得分:2)

您正在将活动的内容设置为按钮。这就是为什么它跨越整个活动而完全是错误的。

而是创建活动的布局(xml文件)并使用setContentView进行设置。然后,您可以以编程方式向内容添加按钮。

示例:

您的活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ViewGroup viewGroup = (ViewGroup) findViewById(R.id.myLayout);
    Button dalsi_akce = new Button(this);
    dalsi_akce.setGravity(Gravity.CENTER);
    RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    dalsi_akce.setLayoutParams(p);
    dalsi_akce.setText("test");


    viewGroup.addView(dalsi_akce);
}

<强> main.xml中:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:id="@+id/myLayout"
    tools:context=".MyActivity">


</RelativeLayout>

答案 1 :(得分:0)

首先,您应该将内容视图定义为RelativeLayout或LinearLayout,然后将按钮添加到此布局。您还可以使用RelativeLayout.LayoutParams类的另一个构造函数:

RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(200, 70);

实际上你使用这个构造函数:

public LayoutParams(int w, int h) {
    super(w, h);
}

答案 2 :(得分:0)

如果您只是在layout.xml中创建了布局,然后在代码中根据需要自定义按钮,那将会更容易。例如,您可以执行以下操作:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

  <Button
  android:id"@+id/left_button"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignParentTop="true"
  android:layout_alignParentRight="true"
  android:text="Left"/>

</RelativeLayout>

这会给你一个按钮,它只与右上角的内容一样大。

相关问题