Skip to main content

Programmatically Position items in activity. NO XML



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);




Comments

  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?

    ReplyDelete
  2. 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?

    ReplyDelete

Post a Comment

Popular posts from this blog

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex