<TextView android:layout_width="match_parent" android:layout_height="48dp" android:paddingTop="48dp" android:text="Test" />
I would expect the TextView to have a measured height of 96dp, regardless of how much space (height-wise) "Test" took up (would expect it to cut off).
Instead, I get the full "Test" + 48dp for the padding.
I can put any valid value for layout_height
and get the same result.
To get my 96dp height, I need:
<TextView android:layout_width="match_parent" android:layout_height="<any valid value>" android:height="48dp" android:paddingTop="48dp" android:text="Test" />
where again, I can put layout_height
as any valid value (but it needs to be there as a required attribute).
I've never used the height
attribute in XML but I couldn't find the difference in the docs, particularly how each one is calculated when the element it's operating on also has values set for padding and/or margin.
Are there any resources available which discuss it, or can someone explain it here?
It might be the situation I used it in, which was causing an issue, so my examples from above can be ignored (I tried in a fresh project and got different results from the combinations of attributes).
But my original questions still apply (some overlaps):
Edit 2 (an aside):
In case it helps understand my initial situation as compared with the fresh project:
I have an activity which sets windowActionBarOverlay
as true, so I get my content flowing under the (translucent) ActionBar.
I also use Croutons, which now were appearing under the ActionBar. Ben Weiss suggested I attach the Crouton to a different ViewGroup, but I wasn't sure which ViewGroup to attach it to.
Instead, I supplied a custom view (which is inflated when it is required) as the Crouton (the TextView from the first part of the question) with a top padding equal to that of the ActionBar, so now it displays vertically below the ActionBar as normal (with other issues for another day).
layout_width : the width, either an exact value, WRAP_CONTENT , or FILL_PARENT (replaced by MATCH_PARENT in API Level 8) layout_height : the height, either an exact value, WRAP_CONTENT , or FILL_PARENT (replaced by MATCH_PARENT in API Level 8) Parameters. c. Context : the application environment.
fill_parent and match_parent are the same, used when we want the height or width of a view to be as big as its parent view, fill_parent being deprecated. wrap_content is used when we want the view to occupy only as much space as required by it.
Wrap Content: Wrap content takes the length of the text and wraps its content. Example: “This is a Wrap Text”. The wrap content starts wrapping from “This” and ends at “text”.
LayoutParams are the Java Object representation of all the params you give to your View in the . xml layout file, like layout_width , layout_height and so on.
All attributes starting with »layout_« are hints for the ViewGroup the View is part of. For this each android.view.ViewGroup
has a set of LayoutParams. The widget itself does not use them.
The android:height
parameter is the initial size of the android.view.View
. But if the View is part ViewGroup
then the ViewGroup
will resize the objet according to its layout rules.
BTW: newer APIs have a new android:minHeight
and android:maxHeight
attribute to clarify programmers intent.
Note that if you don't set android:height
the view will calculate the size itself. Which is right thing to do most of the time.
ViewGroup
is abstract — the answer to this question depends which actual child class you are using.
Note that WRAP_CONTENT
tells the to use ViewGroup
to use android:height
. Which means that this is the correct parameter to be used in your example.
Yes — and recursively . TableLayout will read and write the android:width
attribute to find out the widest object and resized all other object to it.
No for android:padding
but yes for android:layout_margin
. Note that margins are a layout parameter and not every layout manager supports margins.
See margin vs padding for details.
It is easier to consider all width and height attributes to be hints only. The final say of the size of an object has the layout manager of the used ViewGroup
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With