Ders 7: Android LinearLayout Uygulaması

26 Ocak 2012 Perşembe
Linearlayout üzerinde componentlerin nasıl yerleştiğini ve componentlerin özelliklerini anlamak için yapılan örnek şöyledir:

·         main.xml dosyası açılır.İçerisine ilk olarak şunlar yazılır:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal">

Burada tam ortada bulunan ve ekranı hem dikey hem yatay olarak kaplayan bir container oluşturduk. İçerisine yerleştirilecek componentler “orientation” değerinin “vertical” olması sebebiyle alt alta dizilecek.
·         Bundan sonra değişik şekillerde butonlar oluşturulur:

İlk olarak, satırı tamamen kaplayan ama yüksekliği içeriği kadar olacak bir buton yaratma:

<Button
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
android:text="Satırı kaplayan tuş" />

“layout_width” değerinin “fill_parent” olması sebebi ile buton tüm satırı kaplıyor. Buton üzerinde “Satırı kaplayan tuş” yazısı görülecek.

İkinci olarak, içeriği kadar eni ve boyu olan bir buton yaratma:

<Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
android:text="Normal boyutta tuş" />

“wrap_content” değerini vererek butonun içeriği kadar bir boyutta olmasını sağlıyoruz. Buton üzerinde “Normal boyutta tuş” yazısı görülecek.

Son olarak spesifik bir boyutta ve padding özelliğine sahip bir buton yaratma:

<Button
       android:layout_width="250px"
       android:layout_height="wrap_content"
       android:padding="20px"
android:text="250px genişliğinde,20px paddingli tuş" />

Burada “layout_width” değerine 250px vererek, bu butonun genişliğini sabitledik.”padding” değerine verdiğimiz 20px ile, buton içerisindeki yazı, çerçevesinden 20px daha içeride olacak. Buton üzerinde “250px genişliğinde,20px paddingli tuş” yazısı görülecek.

·         Component olarak bir de radiobuttonlar kullanalım. Radiobutton yaratmadan önce, bu özel butonları içerisine koyacağımız özel bir container oluşturmamız gerekiyor. Bunun adı “RadioGroup”.  Yani ana containerımız içerisinde radiogroup containeri var olacak. Ve bu radiogroup containerı içinde de bizim radiobutonlarımız yer alacak.




<RadioGroup android:id="@+id/radiogroup"
       android:orientation="horizontal"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:padding="5px">
    
<RadioButton
           android:id="@+id/yatay"
           android:layout_weight="1"
           android:text="yatay"/>
       <RadioButton
           android:id="@+id/dikey"
           android:layout_weight="1"
    android:text ="dikey" />     
</RadioGroup>

Burada bir RadioGroup containerı oluşturduk ve buna daha sonra java dökümanı içerisinden erişebilmek için “radiogroup” Id’sini verdik.”Orientation” değerinin “horizontal” olması sebebi ile içerisine koyacağımız radiobuttonlar yan yana dizilecek. Ayrıca bu container “layout_width” değerinin “fill_parent” olması sebebi ile bulunduğu satırı tamamen kaplayacak.

Containerı oluşturduktan sonra, içerisine koyacağımız radiobutton componentlerini oluşturuyoruz. Her iki butonda da “layout_weight” değerine 1 vererek, her ikisinin de satırda eşit boyutta görünmesi sağladık. Yani containerı eşit olarak paylaştılar. Her ikisine de, daha sonra java dökümanı içerisinden erişebilmek için ID ataması yaptık. Birinin yanında “yatay” yazısı görünecekken diğerinin yanında “dikey” yazısı görülecek.

·         En son olarak da LinearLayout tagını kapamayı unutmuyoruz.


</LinearLayout>

·         Artık main.xml içerisindeki işimiz bitti.İstediğimiz componentleri oluşturduk.Artık sıra,uygulamayı ilk oluşturduğumuzda oluşan xxxxActivity.java (xxxx kısmı sizin uygulamada kullandığınız isme göre değişiklik gösterir) dosyası ile oynamak. Bu dosya içerisine şu kodları yazıyoruz:


package com.deneme;
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.RadioGroup;
public class DenemeActivity extends Activity implements
RadioGroup.OnCheckedChangeListener {
    /** Called when the activity is first created. */
       RadioGroup radiogroup;
  
@Override
public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);      
setContentView(R.layout.main);
radiogroup=(RadioGroup)findViewById(R.id.radiogroup);
radiogroup.setOnCheckedChangeListener(this);
        
}
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub      
             if(group==radiogroup)
   {
         if(checkedId == R.id.yatay)
                radiogroup.setOrientation(LinearLayout.HORIZONTAL);
         else
            radiogroup.setOrientation(LinearLayout.VERTICAL);            
   }
       }
}

Kullandığımız containerlar için import işlemi yapmamız gerekiyor. LinearLayout ve RadioGroup için


import android.widget.LinearLayout;
import android.widget.RadioGroup;

satırlarını eklememiz gerekiyor.

RadioButtonlardan herhangi biri seçildiğinde, işlem yapmak istediğimiz için dinleyici sınıfı implement etmemiz gerekiyor.


implements RadioGroup.OnCheckedChangeListener

Dinleyici sınıfı RadioGroup üzerine yerleştirerek, işlemlerin o grup içerisinden yapılan bir seçimde gerçekleşeğini belirlemek istiyoruz. Main.xml içerisinde yazmış olan RadioGroup’a erişmek için ona verdiğimiz ID’yi kullanıyoruz ve onu burada bir değişkene atıyoruz. Daha sonra da dinleyiciyi üzerine yerleştiriyoruz.


RadioGroup radiogroup;
radiogroup=(RadioGroup)findViewById(R.id.radiogroup);
radiogroup.setOnCheckedChangeListener(this);

Bu yerleşimi gerçekleştirdikten sonra, seçimin sonucunda ne yapılacağını belirlememiz gerekiyor. Bu örnekte RadioGroup içerisinde eğer yatay butonu seçilirse, butonlar yatay olarak dizilecek ( zaten en başta da böyle belirlediğimiz için bir değişiklik olmayacak), dikey butonu seçilirse de butonlar dikey olarak dizilecek. Bu butonlara ulaşmak için ise yine main.xml içerisinde bunlara atadığımız ID’lerden faydalanıyoruz.


public void onCheckedChanged(RadioGroup group, int checkedId) {
             // TODO Auto-generated method stub
       
             if(group==radiogroup)  
   {
             if(checkedId == R.id.yatay)
                radiogroup.setOrientation(LinearLayout.HORIZONTAL);
         else
                radiogroup.setOrientation(LinearLayout.VERTICAL);             
   }
           
       }


Unutmayın, istediğiniz componente dinleyici uygulayarak işlem gerçekleştirebilirsiniz. Burada sadece RadioGroup üzerine dinleyici (listener) eklenmiştir. 

Uygulama şu şekilde görülecektir:



0 yorum:

Yorum Gönder