Android: programmatically adding buttons to a layout

前端 未结 5 2082
梦如初夏
梦如初夏 2020-11-29 07:40

I\'m trying to get an add button to add another button to the layout, based on the edittext to the left of the button. The point is for a person to list the rooms in their

相关标签:
5条回答
  • 2020-11-29 08:03

    Try this :

        //the layout on which you are working
        LinearLayout layout = (LinearLayout) findViewById(R.id.linear_layout_tags);
    
        //set the properties for button
        Button btnTag = new Button(this);
        btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        btnTag.setText("Button");
        btnTag.setId(some_random_id);
    
        //add button to the layout
        layout.addView(btnTag);
    
    0 讨论(0)
  • 2020-11-29 08:06

    I would add an id to your LinearLayout in xml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@id/llContainer"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical" >
    

    And then change your onClick to this:

    public void onClick(View v) {
        switch (v.getId()) {
    
        case R.id.btnAddARoom:
            //add a room
            //Find you parent layout which we'll be adding your button to:
            LinearLayout layout = (LinearLayout) findViewById(R.id.llContainer);
    
            roomName = etAddARoom.getText().toString();
            Button createdButton = new Button(this);
            createdButton.setText(roomName);
            createdButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,         LayoutParams.WRAP_CONTENT));
            layout.addView(createdButton);
    
            //if no rooms make tvnorooms disappear
    
            break;
        }
    }
    
    0 讨论(0)
  • 2020-11-29 08:14

    Each button needs to have an onclicklistener to tell it what to do. this can be added to your java code under where you state your button.

    Button createdButton = new Button(this);
    createdButton.setOnClickListener(new OnClickListener()
    {
    
    code you want implemented
    
    }
    
    0 讨论(0)
  • 2020-11-29 08:23

    Try this code:

    LinearLayout l_layout = (LinearLayout) findViewById(R.id.linear_layout); 
    l_layout.setOrientation(LinearLayout.VERTICAL);
    
    Button btn1 = new Button(this);
    btn1.setText("Button_text");
    
    l_layout.addView(btn1);
    
    btn1.setOnClickListener(new OnClickListener()
    {
         @Override
         public void onClick(View v) {
               // put code on click operation
         }
    }
    

    that is a way to create button dynamically and add in Layout.

    remember that when you create button programmatically you just use this not Class_name.this

    0 讨论(0)
  • 2020-11-29 08:28
    public class AndroidWalkthroughApp1 extends Activity implements View.OnClickListener {
    
        final int TOP_ID = 3;
        final int BOTTOM_ID = 4;
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            // create two layouts to hold buttons
            LinearLayout top = new LinearLayout(this);
            top.setId(TOP_ID);
            LinearLayout bottom = new LinearLayout(this);
            bottom.setId(BOTTOM_ID);
    
            // create buttons in a loop
            for (int i = 0; i < 2; i++) {
                Button button = new Button(this);
                button.setText("Button " + i);
                // R.id won't be generated for us, so we need to create one
                button.setId(i);
    
                // add our event handler (less memory than an anonymous inner class)
                button.setOnClickListener(this);
    
                // add generated button to view
                if (i == 0) {
                    top.addView(button);
                }
                else {
                    bottom.addView(button);
                }
            }
    
            // add generated layouts to root layout view
            LinearLayout root = (LinearLayout)this.findViewById(R.id.root_layout);
            root.addView(top);
            root.addView(bottom);
        }
    
        @Override
        public void onClick(View v) {
            // show a message with the button's ID
            Toast toast = Toast.makeText(AndroidWalkthroughApp1.this, "You clicked button " + v.getId(), Toast.LENGTH_LONG);
            toast.show();
    
            // get the parent layout and remove the clicked button
            LinearLayout parentLayout = (LinearLayout)v.getParent();
            parentLayout.removeView(v);
        }
    }
    
    0 讨论(0)
提交回复
热议问题