Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • Sosyal
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • Sosyal
Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net

Anasayfa - Haber - Android Programlama Ders 5: Layout Çeşitleri

Android Programlama Ders 5: Layout Çeşitleri

23 Mart 2013 - 12:45
- Haber, Mobil

Bu derste Layout’ların çeşitlerini öğreneceğiz. Ardından ViewGroup(Layout) ve en sık kullanılan Layout’larla dersimize devam edeceğiz…

Layout Çeşitleri:

LinearLayout – View, eğer nesne yatay pozisyonda ise nesneleri bir satır olarak gösterir. Eğer nesne dikey pozisyonda ise nesneleri bir sütün olarak gösterir. Bu özelliği geçen derste zaten kullandık. Önceki derse buradan bakabilirsiniz…

TableLayout – Nesneleri tablo şeklinde yani sütün ve satır olarak gösterir.

RelativeLayout – Her nesnenin pozisyonunu başka nesnelerin pozisyonlarına göre ayarlar.

AbsoluteLayout – X ve Y olarak belirlenen koordinatlarda, her nesne için mutlak bir pozisyon belirler.

1 – LinearLayout (LL)

Bu Layout yeni uygulama yarattığı zaman onu varsayılan olarak kullanır. Çünkü esnektir ve kullanımı rahattır. LL Orientation özelliğine sahiptir. Orientation View, nesnelerin ekranda hangi pozisyonu (Dikey ya da yatay) alacağını belirler.

Basit bir örnekte bu özelliklere detaylı bir şekilde bakalım.

Proje Örneği:

Yeni bir proje açalım.

  • Project name: P005_Layouts
  • Build Target: Android 4.2
  • Application name: Layouts
  • Package name: tr.androidApp.Layouts
  • Create Activity: MainActivity

Main.xml dosyayı açalım ve aşağıdaki kodu kopyalayalım:

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”>
</LinearLayout>

Şimdi ana nesneler dikey pozisyondadırlar.

Sol taraftan LinearLayout’tan beyaz ekrana üç tane butonu taşıyalım.

LL_butonlar

Şimdi Properties menüsünden LL özelliği değiştirelim. Orientation – horizontal (Yatay) seçiyoruz ve kaydediyoruz (CTRL+SHIFT+S). Şimdi butonlar yatay pozisyona yerleştirdiler.

LL_buton_yatay

GroupView’leri birbirine yerleştirebiliriz. LL içine iki tane yeni LL yerleştirelim. Main.xml dosyada üç tane butonu silelim. Ana LL dikey (vertical) olacak ve iki yeni LL yatay (Horizontal) olacak. Sol taraftan Layout sekmesine tıklayacağız ve LinearLayout (Horizontal) seçip Outline sekmeye taşıyacağız. İsterseniz bunun yerine direkt beyaz ekrana da taşıyabilirsiniz. Her yatay LL’ye üç tane buton ekliyoruz.

LL_LL_icinde

2 – TableLayout (TL)

TL TableRow (TR) satırlarından oluşur. Her TR View nesnelerden oluşur. View nesnelerinin sayısı sütünlerin sayısını oluşturur. Sütünlerin sayısının her satırda aynı olması gerekiyor. Eğer sütün içinde View nesnelerinin sayısı farklıysa, kalan sütunlar en büyük sayıya göre düzenleniyor.

Tlayout.xml isimli yeni bir layout-dosya açalım. İçinde ana TableLayout olsun.

tlayout

Ana TableLayout’a üç tane yeni TableRow satırı ekleyelim. Soldan Layouts sekmesinden seçiyoruz. Ve her TableRow’a iki tane buton ekleyelim. Sonuç: Tablomuz üç satırdan ve iki sütundan oluşuyor.

tlayout_buton

İlk satıra birkaç tane buton daha ekleyelim. Bundan sonra bütün satırlar için sütun sayısı aynıdır ve 4’e eşittir. Bunun nedeni sütun sayısının en çok nesne içeren satıra göre belirlenmesidir. Yani bu durumda birinci satıra göre. İkinci ve üçüncü satırlar için üçüncü ve dördüncü sütunları hiçbir nesne içermiyorlar.

tlayout_buton1

İkinci satıra TextView ve Button ekleyelim ve eklediğimiz TextView içerisindeki metni boş yapalım. Üçüncü satırda da aynısını uygulayalım. Görüyoruz ki bu elemanlar üçüncü ve dördüncü sütun içerisine yerleştiler. Ve TextView’ımız metin içermediğinden ve ekranda gözükmediğinden üçüncü sütun, ikinci ve üçüncü satırda boş gözüküyor.

tl_buton2

Sütun genişliği sütun içerisindeki en geniş elemanına göre belirleniyor. TextView’lerin bir tanesine metin girdiğimizde bu metinin sütunu genişlettiğini görüyoruz.

tl_buton3

3 – RelativeLayout (RL)

Bu Layout türünde her View nesnesi belirtilen View nesnesine göre özel bir şekilde yerleştirilebilir.

İlişki çeşitleri:

1) Soldan, sağdan, yukarıdan, belirtilen elemanın altından: layout_toLeftOf, layout_toRightOf, layout_above, layout_below.

2) Belirtilen elemana göre sol, sağ, yukarıdaki ve alttaki kenara göre yaslanan: layout_alignLeft, layout_alignRight, layout_alignTop, layout_alignBottom.

3) Sol, sağ, yukarıdaki ve alttaki ebeveyn kenarına göre yaslanan: layout_alignParentLeft, layout_alignParentRight, layout_alignParentTop, layout_alignParentBottom.

4) Merkeze göre dikey, merkeze göre yatay, ebeveyne ve merkeze göre dikey ve yatay düzleştirilen: layout_centerVertical, layout_centerHorizontal, layout_centerInParent

Daha detaylı bilgiler için help bağlantısından detaylı belgelere de erişebilirsiniz.

Rlayout.xml oluşturalım ve oraya bir de böyle xml kodu kopyalayalım:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
<TextView
 android:id="@+id/label"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:text="Type here:">
</TextView>
<EditText
 android:id="@+id/entry"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_below="@+id/label"
 android:background="@android:drawable/editbox_background">
</EditText>
<Button
 android:id="@+id/ok"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentRight="true"
 android:layout_below="@+id/entry"
 android:layout_marginLeft="10dip"
 android:text="OK">
</Button>
<Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignTop="@+id/ok"
 android:layout_toLeftOf="@+id/ok"
 android:text="Cancel">
</Button>
</RelativeLayout>

Burada ana nesnemiz RelativeLayout oldu.

Karşımıza böyle bir ekran çıkacak:

Rl_ekran

Burada ilgimizi çeken xml kodudur. Hemen bilinmeyen özniteliklerin kısa özetini vereyim:

android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:id=”@+id/entry”

-Her özniteliğin isminde bulunan android kelimesi bir namespace’tir, bu anlatım esnasında onu kullanmayacağım. Başka bir dersimizde bu konuya daha yakından bakacağız.
– id: elemanın ID’si yani kimliğidir.
– layout_width (Nesne genişliği) ve layout_height (Nesnenin yüksekliği) mutlak olarak da tanımlanabilir, aşağıda belirtildiği gibi de: fill_parent (Mümkün olan maksimum genişliği ya da bir ebeveyn içindeki yüksekliği) и wrap_content (Genişlik ve yükseklik bir elemanın içeriğine göre belirlenir). Help içinde match_parent ‘in de olduğu söyleniyor. match_parent ve fill_parent  aynı şeyler. Bazı sebeplerden dolayı sistemin geliştiricileri match_parent ismin daha uygun olduğuna karar verdiler ve ileride fill_parent kullanımdan yavaşça kaybolacak. Şimdilik uyumluluk adına bu isim kullanımda bırakıldı. Burada aklınızda tutmanız gereken şey – match_parent = fill_parent ve ileride match_parent  kullanmaya çalışacağımızdır. İleride bunun üzerinde daha fazla duracağız ve detaylara tekrar dönüp bakacağız.

Şimdi biz nesnelerimize dönelim. Örnekte TextView, EditText, OK ve Cancel isimli iki tane Button görüyoruz. Bizi ilgilendiren öznitelikleri detaylı bir şekilde inceleyelim.

TextView
android:id=”@+id/label” – ID
android:layout_width=”match_parent” – Tüm kullanılabilir genişliği kullanır (Ekranda bu gözükmese de);
android:layout_height=”wrap_content” – İçeriğe göre yükseklik;
hiç bir şeye hiç bir şekilde bağlı değildir

EditText
android:id=”@+id/entry” – ID
android:layout_width=”match_parent” – Kullanabileceği bütün genişlik
android:layout_height=”wrap_content” – İçeriğe göre yükseklik
android:layout_below=”@id/label” – TextView göre daha aşağıda bulunuyor (ID’ye göre bağlantı)

Button_OK
android:id=”@+id/ok” – ID
android:layout_width=”wrap_content” – İçeriğe göre genişlik android:layout_height=”wrap_content” – İçeriğe göre yükseklik
android:layout_below=”@id/entry” – EditText’e göre daha aşağıda bulunuyor
android:layout_alignParentRight=”true” – Ebeveynin sağ kenarına göre düzeltildi
android:layout_marginLeft=”10dip” – soldan boşluğı var( Button_Cancel’ın arka arkaya olmaması için)

Button_Cancel
android:layout_width=”wrap_content” – içeriğe göre genişlik
android:layout_height=”wrap_content” – içeriğe göre yükseklik
android:layout_toLeftOf=”@id/ok” – Button_OK’ye göre solda bulunuyor
android:layout_alignTop=”@id/ok” – Button_OK’in yukarıdaki kenarına göre düzeltildi

Siz kendiniz daha da fazla nesne ekleyebilirsiniz ve onların yerleşimiyle ilgili denemeler yaparak tecrübenizi arttırabilirsiniz.

Dikkatinizi çekmek istediğim yer, View nesnesinin ID’si olmayabilir.(android:id). Mesela, TextView için bu genelde gerekmiyor. Çünkü çoğu zaman ID’ler sabittir ve uygulamanın çalışması esnasında biz ID’lere neredeyse hiç başvurmayız.

EditText’te ise durum bunun tam tersidir: Metin kısmının içeriğiyle çalışıyoruz ve Button’lara tıklamaları işlememiz gerekir. Bunun için elbette hangi butonun tıklandığını bilmemiz gerekiyor. Gelecekte View nesnesine ID belirlememiz gereken yerleri de öğreneceğiz.

4 – AbsoluteLayout (AL)

Ekrandaki ögelerin mutlak konumlandırmalarının sağlar. Biz bileşenin sol üst köşesi için koordinatları belirliyoruz.

AbsoluteLayout köklü bir alayout.xml  kuralım

alayout

Şimdi sürüklemeyle ekrana farklı nesne eklemeyi deneyiniz. Nesne LinearLayot ya da TableLayout’ta olduğu gibi dizilmiyorlar, ama onları sürüklediğiniz yerlerde kalıyorlar. Yani bu mutlak konumlandırmadır.

al_buton

xml kod’u açtığımızda koordinatların belirlenmesi için layout_x ve layout_y’nin  kullanıldığını görebiliriz.

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
<Button
 android:id="@+id/button1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_x="42dp"
 android:layout_y="62dp"
 android:text="Button">
</Button>
<TextView
 android:id="@+id/textView1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_x="142dp"
 android:layout_y="131dp"
 android:text="TextView">
</TextView>
<CheckBox
 android:id="@+id/checkBox1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_x="55dp"
 android:layout_y="212dp"
 android:text="CheckBox">
</CheckBox>
<RadioButton
 android:id="@+id/radioButton1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_x="171dp"
 android:layout_y="318dp"
 android:text="RadioButton">
</RadioButton>
</AbsoluteLayout>

İlk başta nesneleri yerleştirmek için bu yöntem en basit ve kullanışlı gelebilir, çünkü nesneler size gereken yerlerde kalıyorlar. Ama bu sadece çalışmamızı çözünürlüğü belirli olan ekran için yapıyorsak geçerlidir. Eğer böyle bir uygulamayı başka bir ekranda açarsak, nesneler yerlerini değiştirecek ve planladığımız gibi olmayacaktır. Onun için bu Layout’un kullanılması tavsiye edilmiyor. Ve Layout’un Android’in gelecek versiyonlarıyla uyumluluğu garanti edilmiyor.

Layout’un birçok ViewGroup çeşidi daha vardır ve biz onları ilerleyen derslerde birlikte göreceğiz. Şimdilik ise bunlar da işimizi görmek ve öğrenmeyi sürdürmek için yeterli.

Ders Sonu Notları:

Bu derste Layout’un ana tiplerini gördük: LinearLayout, TableLayout, RelativeLayout, AbsoluteLayout.

Sonraki derste ise ViewGroup’ta nesnelerin yerleşimlerini belirlemede bize yardımcı olacak View nesnelerinin, Layout özelliklerini detaylı bir şekilde inceleyeceğiz.

Android Programlamaya Giriş Ders 1: SDK Kurulumu ve Ayarları

Android Programlamaya Giriş Ders 2: AVD Kurulumu ve ilk Projenin Çalıştırılması

Android Programlamaya Giriş Ders 3: Ekranın Nesneleri ve Nesnelerin Özellikleri

Android Programlama Ders 4: Layout-dosya, XML Kodlama ve Ekranın Pozisyonu

Android Programlama Ders 5: Layout Çeşitleri

Android Programlama Ders 6: Kod İçerisinden View Nesneleriyle Çalışma

Etiketler: AbsoluteLayoutAndroidAndroid programlamadershorizontallayout_abovelayout_belowlayout_toLeftOflayout_toRightOfLinearLayoutOrientationOutlineRelativeLayoutTableLayoutTableRowvertical
PaylaşPaylaşTweetYollaPaylaş
Victor Cuiumju

Victor Cuiumju

Yorum Yap Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

RSS Technopat Sosyal

  • Oyun için KZ EDX Pro alınır mı?
  • 4000 TL klavye önerisi
  • iPhone 6s SIM kartsız PC'ye nasıl bağlanır?
  • 40 bin TL sistem toplama
  • Speed Mouse pad önerisi
  • Kablo uzantıları nereden alınabilir?
  • Konsol bitecek mi?
  • Göğüs ortası dolmuyor
  • Alberto Sego parfüm alınır mı?
  • Tarayıcı önerisi

Technopat Video

Şu an oynayan

Apple Watch’u bambaşka bir seviyeye taşıyan 5 uygulama

Apple Watch’u bambaşka bir seviyeye taşıyan 5 uygulama

Apple Watch’u bambaşka bir seviyeye taşıyan 5 uygulama

Akıllı Saat
Huawei Watch GT 6 Pro

Apple’ı 20’ye katlayan saat! Huawei Watch GT 6 Pro incelemesi

Akıllı Saat
Technopat ofisi Eylül ayında neler aldı? 

Technopat ofisi Eylül ayında neler aldı? 

Giyilebilir Teknoloji

Teknoloji tutkunu Technopatların ortak adresi: Technopat.net!

Güncel teknoloji, internet, donanım, yazılım, oyun ve daha fazlası haber, makale ve videolar ile Technopat’ta sizlerle.


01010100 01100101 01100011 01101000 01101110 01101111 01110000 01100001 01110100

Kategoriler

  • Yapay Zeka
  • Ev Teknolojileri
  • Makale
  • Video

Sosyal Medya

Bağlantılar

  • Hakkında
  • Haber
  • Video
  • Sosyal
  • Çerez Politikası
© 2011-2025 Technopat. Tüm Hakları Saklıdır.
Netse
Çerez Onayı
Web sitemizi ziyaret ettiğinizde, kullanıcı deneyiminizi daha iyi hale getirmek, hizmetlerimizi size daha etkin bir şekilde sunabilmek için çerezler (cookies) ve benzeri araçlar kullanıyoruz. Çerezler, internet sitesinin düzgün çalışmasını sağlamak, içeriği kişiselleştirmek, sosyal medya özellikleri sağlamak ve trafik analizi yapmak için kullanılan küçük metin dosyalarıdır. Çerezleri nasıl kullandığımız ve kişisel verilerinizi nasıl işlediğimiz hakkında daha fazla bilgi almak için çerez politikamızı ve kişisel veri politikamızı inceleyebilirsiniz.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, sadece kullanıcının açıkça talep ettiği belirli bir hizmetin kullanılmasını sağlama amacıyla veya iletişimin elektronik iletişim ağı üzerinden iletilmesinin tek amacıyla yasal olarak kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından istenmeyen tercihlerin depolanması yasal amacıyla gereklidir.
İstatistikler
Sadece istatistiksel amaçlarla kullanılan teknik depolama veya erişim. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Pazarlama
Teknik depolama veya erişim, reklam gönderimi için kullanıcı profilleri oluşturmak veya kullanıcıyı bir web sitesinde veya birden fazla web sitesinde benzer pazarlama amaçları için takip etmek amacıyla gereklidir.
Seçenekleri yönet Hizmetleri yönetin {vendor_count} satıcılarını yönetin Bu amaçlar hakkında daha fazla bilgi edinin
Tercihleri yönet
{title} {title} {title}
Onayı Yönet
En iyi deneyimleri sunmak için, cihaz bilgilerini saklamak ve/veya bunlara erişmek amacıyla çerezler gibi teknolojiler kullanıyoruz. Bu teknolojilere izin vermek, bu sitedeki tarama davranışı veya benzersiz kimlikler gibi verileri işlememize izin verecektir. Onay vermemek veya onayı geri çekmek, belirli özellikleri ve işlevleri olumsuz etkileyebilir.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, abone veya kullanıcı tarafından açıkça talep edilen belirli bir hizmetin kullanılmasını sağlamak veya bir elektronik iletişim ağı üzerinden bir iletişimin iletimini gerçekleştirmek amacıyla meşru bir amaç için kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından talep edilmeyen tercihlerin saklanmasının meşru amacı için gereklidir.
İstatistik
Sadece istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Sadece anonim istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Mahkeme celbi, İnternet Hizmet Sağlayıcınızın gönüllü uyumu veya üçüncü bir taraftan ek kayıtlar olmadan, yalnızca bu amaçla depolanan veya alınan bilgiler genellikle kimliğinizi belirlemek için kullanılamaz.
Pazarlama
Teknik depolama veya erişim, reklam göndermek için kullanıcı profilleri oluşturmak veya benzer pazarlama amaçları için kullanıcıyı bir web sitesinde veya birkaç web sitesinde izlemek için gereklidir.
Seçenekleri yönet Hizmetleri yönetin {vendor_count} satıcılarını yönetin Bu amaçlar hakkında daha fazla bilgi edinin
Tercihleri görüntüle
{title} {title} {title}
Sonuç bulunamadı
Bütün Sonuçları Göster
  • Giriş
  • Teknoloji Haberleri
  • Sosyal
  • Video
  • Tavsiyeler
  • İncelemeler
    • Video İncelemeler
  • Güvenlik
  • Oyun
  • Makale
    • Pratik
    • Yazar Köşeleri

© 2025 Technopat
Sorularınız için Technopat Sosyal