Soru & Cevap

Buton yerleşimi sorunu ...

29.03.2016 - 02:10

Merhaba arkadaşlar,

Yaptığım uygulamada ekrana yan yana ve alt alta 3 er ,toplamda 9 buton yarleştriyorum. Butonların resimleri var ve bu resimler png türünde 128x128 boyutunda yuvarlak. Her satır LinearLayout içinde. 9 buton toplam alt alta 3 Linear layout içinde yerleşmiş durumda.

Sorun ise şu: Yan yana 3 butondan 2 tanesi normal gözüküyor ama 3. buton resmi yanlardan basık oluyor ve yuvarlak şekil elipse dönüyor. Ben ise bu butonların şekillerinin bozulmamasını,ekran boyutu büyüdüğünde buton şekillerinin büyüyüp,ekran boyutu küçüldüğünde buton şekillerinin küçülmesini istiyorum. Bunu nasıl yapabilirim?

Yardımlarınız için teşekkürler.

1,027 Görüntülenme

4 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-35522-1496757999.jpg
yerenutku
31.03.2016 - 08:38
<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="3"
        >
        <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content" />
        <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content" />
        <Button
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content" />
</LinearLayout>

Burada gördüğün gibi LinearLayout'un toplam ağırlığı var(weightSum). İçerisindeki elemanlarında width değerleri 0dp ama ağırlıkları 1. Yani toplamda 3 ağırlığa sahip olan bir LinearLayout'un genişliğini 3 ağırlıktan 1'er pay alarak bölüşüyorlar. Umarım işine yarar. 

Sonuç böyle olacaktır:

Görsel kaldırıldı.

/sites/default/files/cevaplar/dosya/2020/file-untitled_5.png
picture-62423-1460561213.jpg
emre.tsbs
29.03.2016 - 05:19

Mehmet merhaba,

Farklı ekran boyutlarına göre tasarım yapmak istiyorsun anladığım kadarıyla. Tek bir ekranda çalışıp tüm ekranlarda aynı görünmesini istemek biraz imkansız. O yüzden farklı boyutlar içinde tasarım yapmalısın.

Sayısız telefon modeli ve boyut varken her biri için ayrı ayrı çalışmak çok zor. Bu yüzden gruplandırma yapabilirsin. Bunun içinde res klasörü altında yeni klasörler açıp bunları tanımlamalısın.

Proje/res/layout/layout-ismi.xml  (Bu zaten var olan)

Proje/res/layout-small/layout-ismi.xml

Proje/res/layout-large/layout-ismi.xml

xsmall yada xlarge şeklinde de türetebilirsin. Bu şekilde yaptığında Hangi ekran boyutundan bağlanılıyorsa ona göre tasarlanan dizayn açılacaktır. small, large gibi ekler android studioda tanımlıdır. Sen sadece klasörleri açıp uygun tasarımları yapmalısın.

Ayrıca ekran çözünürlüğüde bir başka sorun olarak karşına çıkacaktır. Bunun içinde

Proje/res/drawable-xhdpi/resim.png

Proje/res/drawable-hdpi/resim.png

Proje/res/drawable-mdpi/resim.png

Proje/res/drawable-ldpi/resim.png

şeklinde klasörler açıp aynı resmi farklı çözünürlüklerde atman gerekir. Boyut olarakta çözünürlükler için bir genel oran var. 

xhdpi: 2.0
hdpi:   1.5
mdpi:  1.0 (temel)
ldpi:    0.75

Burdada bunları tanımlayıp farklı çözünürlükte attıktan sonra ekstra birşey yapman gerekmez. Buton backgraund kısmında @drawable/resim şeklinde çekersen ekran boyutu ve çözünürlüğe göre kendisi ilgili resmi alacaktır.

Ayrıca layout kullanımında esneklik sağlamak için 3 tane alt alta lineer vs kullanmak yerine doğrudan grid layout tavsiye ederim. Biraz araştırırsan bir çok yerde çok daha rahat kullanabileceğini göreceksin.

Umarım bilgiler işine yarar, kolay gelsin.

 

Mehmet
29.03.2016 - 07:50
Bu açıklayıcı anlatımınız için çok teşekkürler Emre Bey. Merak ettiğim bir şey var. Butona verdiğimiz resim üzerinde aspect ratio yu nasıl sağlayacağız. Ekran genişliğine göre şekil boyutlarında değişmeler oluyor. Sabit heigt-width değeri verirsekte ekran bu sefer üstüste binmeler olabiliyor. Buton şekil değiştirdiğinde en-boy nasıl sabit bırakabilirim?
Emre Taşbaş
30.03.2016 - 12:57
En boy oranını her telefonda yakalamak biraz zor. Örn kullandığım iki telefon samsung note5 ve samsung note4 edge, ikisinide ekran boyutu 5,7 inc ama ikisinde de aynı görünümü elde edemiyosun. O yüzden gruplandırma önerdim. Daha çok modelde daha stabil görünüm yakalayabilmek için. Belki şunu yaparsan sorununu bir nebze çözebilir. Açılışta gelen lineer layout un içine bir grid layout. 3x3 şekilde row ve column ayarlayıp her bir hücreye birer tane lineer layout ve her lineerin içinede birer buton bırakırsın. Böylece butonun en boy oranını korumaktan ziyade lineerlere bu işi yıkabilirsin. Lineerlere vereceğin oran xhdpi, hdpi, mdpi, ldpi oranına eşit olursa ve en az buton boyutu kadar olursa sanırım bahsettiğin sorunlar ortadan kalkacaktır.
picture-58288-1459256439.jpg
Drve
29.03.2016 - 04:14

Ayrıca, ekran büyüdüğü zaman arayüzdeki nesnelerin de otomatik olarak şekillenmesi için width ve height değerine match_parent, wrap_content verebilirsin. Ben genelde o şekilde yapıyorum.

picture-7311-1431108875.png
ayteksokmen
29.03.2016 - 02:23

Linear Layout kullanıyorsanız, butonların width değerlerine 0 verip; weight değerlerine hepsine eşit bir değer atarsanız (0.3 gibi), sorununuzun çözüleceğini düşünüyorum.

Kolay gelsin.