0
votes

I have an ImageView inside a RelativeLayout that I added programmatically (The ImageView is added by code, not the RelativeLayout.)

If I had added the ImageView by XML, I would have done this:
<ImageView android:id="@+id/login_loadingimage"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_centerVertical="true"
      android:src="@drawable/imagefilename"
      android:visibility="invisible"
/>

But now I want this done programtically. How do I get the centering right? I have tried creating RelativeLaout.Parameters but whe I create them using

RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(this, null);  //[1]
p.AddRule(...);[2]

An exception is thrown at line 1. In addition I wouldn't know how to apply these LayoutParameters on ViewGroup.LayutParameters anyway.

Also, I cannot just make ViewGroup.LayoutParameters because
1. They do not seem to have the Centering (Horizontal and Vertical) elements I need.
2. Every example seems to indicate there is a Constructor that simply takes Layout_Width and Layout_Height as parameters, but there is not.

Before someone says to add a layout first, please tell me how to center the layout in code as well. Thanks.

Please help.

1

1 Answers

3
votes

The way to do it is simple:

Create xaml you want of JUST the component - put the file in the layout folder.

Then use the inflating service to inflate the control inside the code you want (make sure to create the LayoutInflator as follows):

LayoutInflater _inflatorservice = (LayoutInflater)this.GetSystemService(Context.LayoutInflaterService);

Then simply call this:

_inflatorservice.Inflate(Resource.Layout.[control], parent);

and Bob is your mother's brother!