Android动态创建一个Button

时间:2014-03-20 05:04:05

标签: android android-layout android-button

我对Android很陌生,并且在动态创建Button时遇到问题。我通过在Xml布局中创建并正常工作。希望有人可以提供帮助,编写代码以在运行时创建下面的按钮,然后将其添加到TableRow中。

注意:我想创建一个Button,它相当于下面的Xml,但不使用findViewById(),因为这个按钮不存在。我知道如何创建一个Button,但我在设置下面的所有属性时遇到了困难。特别是layout_weight,background和drawableTop。

<Button
    android:id="@+id/BtnRating1"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:text="@string/Rating_1"
    android:drawableTop="@drawable/face_1"
    style="?android:attr/borderlessButtonStyle"
    android:background="?android:selectableItemBackground"
    android:gravity="center"
    android:onClick="OnRating_1" />

4 个答案:

答案 0 :(得分:1)

假设上面的xml名为button_view.xml

View view = LayoutInflater.from(context).inflate(R.layout.button_view);
Button button = (Button) view.findViewById(R.id.BtnRating1);

这样你可以直接从xml充气

答案 1 :(得分:0)

我为您提供了如何在动态时间创建按钮的代码,您可以为此按钮设置所需的所有属性。

Button myButton = new Button(this);
    myButton.setText("Push Me");

LinearLayout ll = (LinearLayout)findViewById(R.id.BtnRating1);
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
ll.addView(myButton, lp);

答案 2 :(得分:0)

以下行将以编程方式创建按钮

Button btn = new Button(ActivityContext);

然后您还可以添加按钮属性,如下所示

RelativeLayout.LayoutParams btnparamLayoutParams = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT, 90);
        btn.setGravity(Gravity.CENTER_VERTICAL);
        btnparamLayoutParams.height = adjustedDp;
        btn1paramLayoutParams.setMargins(0, 0, 0, 100);
        btn.setLayoutParams(btnparamLayoutParams);
        btn.setBackgroundColor(Color.WHITE);

最后将您的按钮添加到父版面。

答案 3 :(得分:0)

你可以双向进行

  1. 使用按钮创建表格行布局并对其进行充气。
  2. 您可以动态创建按钮并将其添加到表格行中,请参阅下面的代码以动态创建按钮。
  3.  TableRow.LayoutParams params = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT);
        Button button = new Button(this);
        params.weight = 1;
        params.gravity = Gravity.CENTER;
        tablerow.addView(button,params);   
    

    这是活动的背景。