Monodroid: программное добавление настраиваемых элементов управления в макет с горизонтальным и вертикальным центрированием.

У меня есть ImageView внутри RelativeLayout, который я добавил программно (ImageView добавляется кодом, а не RelativeLayout.)

Если бы я добавил ImageView с помощью XML, я бы сделал это:
‹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 "
/›

Но теперь я хочу, чтобы это было сделано программно. Как мне получить правильное центрирование? Я попытался создать RelativeLaout.Parameters, но когда я создаю их, используя

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

Исключение выбрасывается в строке 1. Кроме того, я бы все равно не знал, как применить эти LayoutParameters к ViewGroup.LayutParameters.

Кроме того, я не могу просто создать ViewGroup.LayoutParameters, потому что
1. Кажется, у них нет нужных мне элементов центрирования (горизонтального и вертикального).
2. Кажется, каждый пример указывает на то, что существует конструктор, который просто принимает Layout_Width и Layout_Height в качестве параметров, но его нет.

Прежде чем кто-то скажет сначала добавить макет, расскажите, пожалуйста, как центрировать макет в коде. Спасибо.

Пожалуйста помоги.


person Quintin Balsdon    schedule 15.12.2011    source источник


Ответы (1)


Способ сделать это просто:

Создайте xaml, который вы хотите, ТОЛЬКО компонент - поместите файл в папку макета.

Затем используйте службу надувания, чтобы надуть элемент управления в желаемом коде (обязательно создайте LayoutInflator следующим образом):

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

Тогда просто назовите это:

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

а Боб - брат твоей матери!

person Quintin Balsdon    schedule 20.12.2011
comment
Спасибо никому за попытку ответить на этот вопрос! - person Quintin Balsdon; 27.01.2012