1

I have an Activity that has all the display elements added dynamically. Theres no xml for the acvtivity at all.

The Activity consists of the following controls:

  1. RelativeLayout (Layout object that all the child views sit in)
  2. TextView (Title for the page, sits at top of the RelativeLayout)
  3. ScrollView (Scrollable area that holds all the data controls)
  4. LinearLayout (Layout object to hold the activity buttons)

I want to know how it is possible to define that the ScrollView sits below the Title TextView and above the LinearLayout button holder where the LinearLayout is set to the Activity Page bottom

I have tried using RelativeLayout.LayoutParams to set up rules but cannot seem to understand the way to do it. Any help or links to tutorials would be apreciated

I have included my Code to see if someone can help

    // 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);
Comic Coder
  • 519
  • 1
  • 9
  • 32

2 Answers2

1

See the links below which might help you achieve this :

Programmatically adding items to a relative layout

How to programmatically add multiple LinearLayouts into one view and then add to ViewFlipper?

Community
  • 1
  • 1
Deva
  • 3,919
  • 1
  • 27
  • 38
  • This helped me alot however I am still struggling to get the scrollview to sit between my textview and button layout. It seems that the scrollview is just being plonked on the activity FILL_PARENT, FILL_PARENT so that it fills the relativelayout and is ignoring the rules I have set. – Comic Coder Feb 28 '12 at 14:21
  • I added my code to my question post. It has been stripped of any code not relevant to the problem – Comic Coder Feb 28 '12 at 14:30
1

Deva has already answered your question, but it sounds to me like you could define an xml layout as you have described above, inflate it and populate it dynamically programmatically... perhaps the layout would initially contain an empty LinearLayout, and/or no text set for the TextView, maybe even set everything to android:visibility="gone" and show it when you have added/updated all your views?

GPMorgan
  • 106
  • 1
  • 4
  • In the end i created a simple xml file with the textview, scrollview and horizontal linearlayouts and dynamically added my components into a linearlayout inside the scrollview – Comic Coder Feb 28 '12 at 15:18