What's the difference between android:height and android:layout_height?

后端 未结 4 597
独厮守ぢ
独厮守ぢ 2021-02-03 19:48

         


        
4条回答
  •  故里飘歌
    2021-02-03 20:25

    Question 1:

    (what's the difference between them?):

    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.

    Question 2

    (when should one be used over the other?):

    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.

    Question 3

    (does the use of one affect the use of the other?):

    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.

    Question 4

    (does the use of one have implications over other attributes which can control the measured dimensions of a view, like padding or margin?)

    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.

    Final words:

    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.

提交回复
热议问题