программный RelativeLayout (похож на CSS с плавающей точкой справа) - PullRequest
1 голос
/ 19 февраля 2012

У меня довольно простая раскладка - изображение справа с текстом слева. Текст должен переноситься и не перекрывать изображение. Оба отцентрированы вертикально к конечной высоте контейнера.

RelativeLayout выглядел соответствующим образом, выравнивая изображение по правому краю родителя, а правый край текстового обзора - по левому краю изображения. Документы делают его похожим на RelativeLayout.LEFT_OF должен сделать это.

Вот что у меня есть. Текст накладывается на изображение. Мне нужно, чтобы текстовое представление было настолько большим, насколько доступно.

LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lp.addRule(RelativeLayout.CENTER_VERTICAL);

ImageView logo = new ImageView(context);
logo.setImageResource(R.drawable.whatever);
logo.setId(0);
addView(logo, lp);

lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.LEFT_OF, 0);
lp.addRule(RelativeLayout.CENTER_VERTICAL);

TextView header = new TextView(context);
header.setText("Lorem ipsum dolor sit amet.  Lorem ipsum dolor sit amet.  Lorem ipsum dolor sit amet.");
addView(header, lp);

Я бы очень предпочел сделать это программно (в отличие от XML), по причинам, которые слишком длинны и неинтересны.

Любое понимание будет оценено. TYIA.

1 Ответ

0 голосов
/ 19 февраля 2012

Не устанавливайте свой logoId на 0. Вместо этого используйте setId(1231231) или идентификационный номер и делайте это lp.addRule(RelativeLayout.LEFT_OF, logo.getId()); Вы также можете использовать setMargins(...), если они вам нужны.


Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...