Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - Use of view.setX() and setY in api 8

i am working on android api8. i want to position/place a view on screen dynamically. but to use setX and setY we need API level 11 and above. how can we use it in API 8 or is there any alternative for this? need help

like image 220
manojmore Avatar asked Aug 30 '12 11:08

manojmore


People also ask

What is view view in android?

View is a basic building block of UI (User Interface) in android. A view is a small rectangular box that responds to user inputs. Eg: EditText, Button, CheckBox, etc. ViewGroup is an invisible container of other views (child views) and other ViewGroup.

What is view in xml?

A View occupies a rectangular area on the screen and is responsible for drawing and event handling. Views are used for Drawing Shapes like Circles,Rectangles,Ovals etc . Just Use View with background and apply a Shape using Custom Drawable.

What does findViewById return?

findViewById returns an instance of View , which is then cast to the target class. All good so far. To setup the view, findViewById constructs an AttributeSet from the parameters in the associated XML declaration which it passes to the constructor of View . We then cast the View instance to Button .


1 Answers

You can do this by using the LayoutParams. These can be added to components of the android interface to set their bounds and position.

An example (setting the LayoutParams on a child view of a RelativeLayout)

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); //The WRAP_CONTENT parameters can be replaced by an absolute width and height or the FILL_PARENT option)
params.leftMargin = 50; //Your X coordinate
params.topMargin = 60; //Your Y coordinate
childView.setLayoutParams(params);

Take note that the type of the LayoutParams must be equal to the parent of the childview you want to add them to. (LinearLayout.LayoutParams for a LinearLayout , RelativeLayout.LayoutParams for a RelativeLayout etc.).

Also, instead of childView.setLayoutParams(params); you can also use parentView.addView(childView,params); to set the Layoutparams when the item is added to the parent container.

NOTE! The values for the coordinates are in pixels. Since it's best practice to use DP values to define your interface sizes you could use this piece of code to convert dp to pixels:

private int getPixels(int dipValue){ 
     Resources r = getResources();
     int px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue,   r.getDisplayMetrics());
     return px; 
}
like image 61
Leon Lucardie Avatar answered Nov 15 '22 22:11

Leon Lucardie