Относительное расположение не работает программно добавлено - PullRequest
0 голосов
/ 12 июля 2011

Я только начал программировать Android, написал быстрый код, и мне не удалось заставить его делать то, что я хочу. По сути, я хочу, чтобы появилось диалоговое окно с 2 текстовыми полями и изображением, показанным в определенном макете. У меня есть следующий код:

AlertDialog.Builder dialog = new AlertDialog.Builder(this);

    RelativeLayout dialogItems = new RelativeLayout(this);
    EditText itemTitle = new EditText(this);
    EditText itemBody = new EditText(this);
    ImageView dIcon = new ImageView(this);

    itemTitle.setText("Note Title");
    itemBody.setText("Note Details");
    dIcon.setImageResource(R.drawable.create);

    final RelativeLayout.LayoutParams imageParam = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    imageParam.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
    imageParam.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    dIcon.setLayoutParams(imageParam);
    dialogItems.addView(dIcon, imageParam);

    final RelativeLayout.LayoutParams titleParam = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    titleParam.addRule(RelativeLayout.RIGHT_OF, dIcon.getId());
    titleParam.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    itemTitle.setLayoutParams(titleParam);
    dialogItems.addView(itemTitle, titleParam);

    final RelativeLayout.LayoutParams bodyParam = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    bodyParam.addRule(RelativeLayout.ALIGN_LEFT, itemTitle.getId());
    bodyParam.addRule(RelativeLayout.BELOW, itemTitle.getId());
    itemBody.setLayoutParams(bodyParam);
    dialogItems.addView(itemBody, bodyParam);

    dialog.setView(dialogItems);

    dialog.show();

Кто-нибудь знает, почему это не сработает? Проблема в том, что появляется всплывающее окно, но все элементы просто перекрываются в левом верхнем углу. Спасибо

P.S. Я проверил другие сообщения и вопросы, и даже ответы не работают! Поэтому, пожалуйста, исправьте мой код, а не связывайте меня с другим вопросом.

1 Ответ

4 голосов
/ 12 июля 2011

Вы не установили идентификаторы, поэтому все представления имеют одинаковые идентификаторы (-1).Это должно работать:

private static final int DIALOG_ITEMS_ID = 1;
private static final int ITEM_TITLE_ID = 2;
private static final int ITEM_BODY_ID = 3;
private static final int ICON_ID = 4;

RelativeLayout dialogItems = new RelativeLayout(this);
dialogItems.setId(DIALOG_ITEMS_ID);
EditText itemTitle = new EditText(this);
itemTitle.setId(ITEM_TITLE_ID);
EditText itemBody = new EditText(this);
itemBody.setId(ITEM_BODY_ID);
ImageView dIcon = new ImageView(this);
dIcon.setId(ICON_ID);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...