android:height makes the view be exactly this many pixels tall while android:layout_height specifies the basic height of the view.
Well, android_layout:height specifies the basic height of the VIEW whereas android:height specifies the height of the object (for example, the button in the xml).
Good luck! :)
From playing about with this a bit, I think that layout_height
is flexible - a preferred height but will still expand/shrink with the content - and height
is a definite value.
What's happening in your case is that the TextView is wrapping around the Test
text but still using the 48dp paddingTop
attribute.
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
.