Программно позиционировать элементы в деятельности. НЕТ XML - PullRequest
1 голос
/ 28 февраля 2012

У меня есть Activity, в которой все элементы отображения добавляются динамически.Нет вообще никакого xml для активности.

Деятельность состоит из следующих элементов управления:

  1. RelativeLayout (объект Layout, в котором находятся все дочерние представления)
  2. TextView (заголовок страницы, находится в верхней части RelativeLayout)
  3. ScrollView (прокручиваемая область, содержащая все элементы управления данными)
  4. LinearLayout (объект Layout для хранения кнопок действий)

Я хочу знать, как можно определить, что ScrollView находится под заголовком TextView и над держателем кнопки LinearLayout, где LinearLayout установлен на страницу активности внизу

Я пытался использоватьRelativeLayout.LayoutParams для установки правил, но не может понять, как это сделать.Любая помощь или ссылки на учебники будут оценены

Я включил свой Кодекс, чтобы посмотреть, может ли кто-нибудь помочь

    // declare the items for display
    RelativeLayout baseLayout = new RelativeLayout(this);   
    // add the customer name and number field.
    // NOTE: We will always require this widget regardless of dialog design fields
    tvCustomerNameNumber = new TextView(this);
    tvCustomerNameNumber.setTextSize(20);
    tvCustomerNameNumber.setText("Customer Name & Number");

    // build up the linear layout of controls
    LinearLayout ll = new LinearLayout(this);
    ll.setOrientation(LinearLayout.VERTICAL);       

    // Scroll view.
    // NOTE: We will always need this widget to enable us to scroll the page
    // if too many items are added for the display size
    ScrollView sv = new ScrollView(this);
    sv.addView(ll);

    // buttons
    LinearLayout buttons = new LinearLayout(this);
    buttons.setOrientation(LinearLayout.HORIZONTAL);

    // button edit
    Button edit = new Button(this);
    edit.setId(EDIT_BUTTON_ID);

    // button save
    Button save = new Button(this);
    save.setId(SAVE_BUTTON_ID);

    // button cancel
    Button cancel = new Button(this);
    cancel.setId(CANCEL_BUTTON_ID);

    // add each button to the button layout
    buttons.addView(edit);
    buttons.addView(save);
    buttons.addView(cancel);

    // Scroll view Layout parameters
    RelativeLayout.LayoutParams scrollParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    scrollParams.addRule(RelativeLayout.BELOW, tvCustomerNameNumber.getId());
    scrollParams.addRule(RelativeLayout.ABOVE, buttons.getId());

    // buttons Layout parameters
    RelativeLayout.LayoutParams buttonParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    buttonParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    buttonParams.addRule(RelativeLayout.BELOW, sv.getId());

    // add the customer name number field to the base layout
    baseLayout.addView(tvCustomerNameNumber);
    // add the scroll view to the base layout
    baseLayout.addView(sv); //, scrollParams);      
    // add the buttons to the base layout
    baseLayout.addView(buttons, buttonParams);

    // set the content view
    this.setContentView(baseLayout);

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Дева уже ответил на ваш вопрос, но мне кажется, что вы можете определить макет xml, как вы описали выше, наполнить его и заполнить его динамически программно ... возможно, макет изначально будет содержать пустой LinearLayout, и / или текст не установлен для TextView, может быть, даже установить все на Android: visibility = "ушел" и показать его, когда вы добавили / обновили все свои представления?

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