user2456977
user2456977

Reputation: 3964

Change button width and height through code

I am trying to change the width and height of Buttons I dynamically create but my code below is not working. The Buttons stays the same default size. Anyone know why this is not working?

I believe it might have to do with this line:

 myButton.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

The problem may be that I am not supposed to create new LinearLayout params each time but rather add it to an existing LayoutParam?

What do you guys think?

public void onClick(View view)
    {

        LinearLayout linearLayout2 = new LinearLayout(view.getContext());

        linearLayout2.setOrientation(LinearLayout.HORIZONTAL);

        LinearLayout.LayoutParams rlp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);      

        int size = enter_txt.getText().toString().length();

        for (int i=0; i<size; i++){
            Button myButton = new Button(view.getContext());
            myButton.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            myButton.setWidth(100);
            myButton.setHeight(100);
            myButton.setBackgroundResource(R.drawable.button);
            linearLayout2.addView(myButton, rlp);
        }
     }

Upvotes: 0

Views: 314

Answers (2)

Blaze Tama
Blaze Tama

Reputation: 10948

Change this code :

myButton.setWidth(100);
myButton.setHeight(100);

To this :

myButton.getLayoutParams().width = 100;
myButton.getLayoutParams().height = 100;

And yes, in your case you can replace :

myButton.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

To :

myButton.setLayoutParams(rlp);

Upvotes: 1

romtsn
romtsn

Reputation: 12002

You can use other constructor of the LinearLayout.LayoutParams, which receiving width and height:

myButton.setLayoutParams(new LinearLayout.LayoutParams(100, 100));

Upvotes: 0

Related Questions