I’m absolute beginner when it comes to mono for android.
I’ve used following code snippet to create 50 buttons programmatically:
for(int i=0;i<50;i++)
{
//code to calculate x and y position
btn=new Button(this);
//btn.SetBackgroundColor(Android.Resource.Color.);
btn.SetTextSize(Android.Util.ComplexUnitType.Sp,8);
btn.Text="Scrip "+i+"\n"+"CMP "+i+"\n"+"%Chg "+i;
lp = new RelativeLayout.LayoutParams(new ViewGroup.MarginLayoutParams((width+30)/5, (height-10)/10));
btn.LayoutParameters=lp;
lp.SetMargins(leftMargin,topMargin, 0, 0);
main.AddView(btn);
}
String str="";
btn.Click += (sender, e) =>
{
str=btn.Text;
Toast.MakeText(this, "Selected="+str,ToastLength.Short).Show();
Console.WriteLine("Selected="+str);
};
But one big problem with this code is at the end of the loop, btn object has reference of the last button only.
So if any button other than last button is pressed, button click event is not fired.
How to resolve it?
Ideally, it should return the text of the clicked button.
Also, referring to below screenshot, the default button style doesn’t look good here. So I want to change it to exact rectangle and not rounded-rectangel(the default one).
Any idea on this?
As I’m very new to this, any help will be appreciated !!
EDIT
Asa result of your help, I’m able to create and refer all buttons appropriately.
But how to set their style as exact rectangle??

Move
btn.Click += (sender, e)subscription inside for loop.Even better – create one named method instead of creating many anonymous. E.g. Button_Click and subscribe to it:
Inside that method you can cast sender object to Button and know which button was clicked.
UPDATE: here is complete code
I prefer not to use magic numbers in code 🙂