10 Ocak 2018 Çarşamba

Android Dersleri - layout_gravity

Summary : 
For horizontal Linear Layout, we can use layout_gravity attribute of a View( for example a Button, TextView etc. ) in order  to position the View element vertically.( Yatay linear layout'daki View'lerin dikey pozisyonunu belirlemek için View element'lerin layout_gravity attribute'ünü kullanırız. Zaten yataydaki 3 butondan birini sağa sola vs. hareket ettiremeyeğimizi düşünürsek, tek hareket ettirebileceğimiz yönün dikey olduğunu anlarız. Burdan aklımızda kalsın. )
For vertical Linear Layout, we can use layout_gravity attribute of a View( for example a Button, TextView etc. ) in order  to position the View element horizontally.( Vertical linear layout'daki View'lerin yatay pozisyonunu belirlemek için View element'lerin layout_gravity attribute'ünü kullanırız. Zaten dikey olarak dizilmiş 3 butondan birini aşağı yukarı vs. pozisyonlandırmanın mantıksız olduğunu düşünürsek, tek hareket ettirebileceğimiz yönün yatay olduğunu anlarız. Burdan aklımızda kalsın. )
For a horizontal Linear Layout the following values make sense:
  • top
  • center
  • bottom
That is because the children of a horizontal Linear Layout are layed out horizontally one after the other. Only thing can be controlled using the android:layout_gravity is how a child view is positioned vertically.
In the above example the top Linear Layout is a horizontal Linear Layout. Setting the android:layout_gravity=top on thel_g=top Button has an effect of positioning it at the top. Setting the android:layout_gravity=center on the l_g=centerButton has an effect of positioning it at the vertical center. Setting the android:layout_gravity=bottom on thel_g=bottom Button has an effect of positioning it at the bottom. ( Horizontal linear layout kullanıyoruz diyelim. Ekranda yan yana 3 tane buton koyduk diyelim. Bu yan yana koyulan butonları dikeyde top pozisyona mı dikeyde center pozisyona mı dikeyde bottom pozisyona mı koyacağımızı belirlemek için Button View'in(Button element'in) layout_gravity attribute'ünü kullanırız. x x x -> x'ler bir butonu gösteriyor olsun. Herbir x'in dikey pozisyonu belirlemek için Button View'in(Button element'in) layout_gravity attribute'ünü kullanırız.  )
For a vertical Linear Layout the following values make sense:
  • left
  • center
  • right
That is because the children of a vertical Linear Layout are layed out vertically one below the other. Only thing can be controlled using the android:layout_gravity is how a child view is positioned horizontally.
In the about example the bottom Linear Layout is a vertical Linear Layout. Setting the android:layout_gravity=left on the l_g=left Button has an effect of positioning it at the left. Setting the android:layout_gravity=center on thel_g=center Button has an effect of positioning it at the horizontal center. Setting the android:layout_gravity=right on the l_g=right Button has an effect of positioning it at the right. ( Vertical linear layout kullanıyoruz diyelim. Ekranda alt alta 3 tane buton koyduk diyelim. Bu alt alta konulan butonları yatayda en sola mı ortaya mı en sağa mı koyacağımızı belirlemek için Button View'in(Button element'in) layout_gravity attribute'ünü kullanırız. x x x -> x'ler bir butonu gösteriyor olsun. Herbir x'in dikey pozisyonu belirlemek için Button View'in(Button element'in) layout_gravity attribute'ünü kullanırız.  )


Example : 


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

...

android:orientation="horizontal"

android:gravity="center" >



<Button

...

android:layout_gravity="top">

</Button>

<Button

...

android:layout_gravity="center">

</Button>

<Button 

...

android:layout_gravity="bottom">

</Button>



</LinearLayout>

android:layout_gravity is the Outside gravity of the View. That means, to specify the direction in which the View should touch it's parent's border. In other words, it sets the gravity of the View or Layout in its parent. ( Yukarıdaki kod örneğini düşünürsek, bir horizontal linear layout içerisinde button view'ler olsun. Bu button view'lerin parent view'leri olan linear layout içerisinde yukarı, aşağı veya center'a hizalanma pozisyonunu belirleriz. )
android:gravity is the Inside gravity of that View. This means, in which direction it's contents should align. sets the gravity of the content of the View it is used on. In other words, it sets the gravity of the content of the View it is used on. ( Yukarıdaki kod örneğini düşünürsek, bir horizontal veya vertical linear layout içerisinde button view'ler olsun. Bu button view'lerin içlerinde bir text vardır. Button view'lerin içerikleri olan text'leri sağa,sola,yukarı veya ortaya hizalamak için gravity attribute'ünü kullanırız. )
Easy trick to remember: Take "layout-gravity" as "Lay-outside-gravity". ( layout-gravity'nin hangi çeşit gravity olduğunu şuradan hatırlayalım. Lay outside gravity yani bir view'in parent'ı içerisindeki pozisyonu, hizalanmasını belirler layout-gravity. gravity ise bir view'in içeriğinin bu view'e göre pozisyonunu, hizalanmasını belirler, örneğini textview'in gravity attribute'ünü kullanarak aslında şunu belirleriz, textview'in içerisindeki text'in textview'e göre hizalanması. textview'in layout_gravity attribute'ünü kullanarak ise textview'in parent view'i içerisindeki pozisyonunu, hizalanmasını belirleriz, örneğin horizontal bir linear layout içerisindeki textview'in, içerisinde bulunduğu linear layout'a göre pozisyonunu belirleriz, üste mi alta mı ortaya mı hizalansın diye.   )


Note that some of these attributes are only applicable when a View is in certain specific ViewGroup(s). For example, the  layout_weight and layout_gravity attributes are only applicable if a View is either in a LinearLayout or TableLayout. ( Bir view'in layout_weight ve layout_gravity attribute'lerinin düzgün bir şekilde çalışabilmesi için, bu view'in LinearLayout veya TableLayout içerisinde olması zorundadır. Örneğin, LinearLayout veya TableLayout içerisindeki bir button'ın layout_weight ve layout_gravity attribute'lerini kullanabiliriz ama bir relativeLayout'daki button view'de layout_gravity ve layout_weight attribute'leri kullanılamaz. Yani bazı attribute'ler sadece bazı view/viewgroup'larda düzgün çalışır. )

fill_parent : Bir view'in parent view'inin yatay veya dikey tüm alanını kaplaması için kullanılır.


wrap_content : Bir view'in, yatayda/dikeyde içeriği kadar alanı kaplaması için kullanılır.

Hiç yorum yok:

Yorum Gönder