'Android set height and width of Custom view programmatically
I have created a custom view named Graphview . Here is the structure for the GraphView class.
public class GraphView extends View {
public GraphView(Context context, float[] values, String title, String[] horlabels, String[] verlabels, boolean type) {
super(context);
........
}
..................
.................
}
I have added the view in a tablerow using addview(). It is working fine. Now I want to set height and width for the GraphView. How to do that?
Solution 1:[1]
If you know the exact size of the view, just use setLayoutParams():
graphView.setLayoutParams(new LayoutParams(width, height));
Or in Kotlin:
graphView.layoutParams = LayoutParams(width, height)
However, if you need a more flexible approach you can override onMeasure() to measure the view more precisely depending on the space available and layout constraints (wrap_content, match_parent, or a fixed size). You can find more details about onMeasure() in the android docs.
Solution 2:[2]
You can set height and width like this:
myGraphView.setLayoutParams(new LayoutParams(width, height));
Solution 3:[3]
you can set the height and width of a view in a relative layout like this
ViewGroup.LayoutParams params = view.getLayoutParams();
params.height = 130;
view.setLayoutParams(params);
Solution 4:[4]
On Kotlin you can set width and height of any view directly using their virtual properties:
someView.layoutParams.width = 100
someView.layoutParams.height = 200
Solution 5:[5]
If you're using Kotlin, you can also use the following code which applies your given lambda on the current layout params:
someView.updateLayoutParams {
height = 200
}
Solution 6:[6]
spin12.setLayoutParams(new LinearLayout.LayoutParams(200, 120));
spin12 is your spinner and 200,120 is width and height for your spinner.
Solution 7:[7]
This is a Kotlin based version, assuming that the parent view is an instance of LinearLayout.
someView.layoutParams = LinearLayout.LayoutParams(100, 200)
This allows to set the width and height (100 and 200) in a single line.
Solution 8:[8]
Adding on to the solution by @MorganWilde. You can use the following code if you want to use WRAP_CONTENT/MATCH_PARENT.
someView.layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Eric Nordvik |
| Solution 3 | tvkanters |
| Solution 4 | gundrabur |
| Solution 5 | Adib Faramarzi |
| Solution 6 | ahmed hamdy |
| Solution 7 | Morgan Wilde |
| Solution 8 | Joseph Alex Chakola |
