2010-08-22 12 views
8

Etkinliğim düğmelerinden birine bir rozet eklemeye çalışıyorum. Şu anda xml yapmaya çalışıyorum. rozetli Düğme, bu gibi görünmelidir:Düğmenin sol üst kısmına bir rozet balonunun yerleştirilmesi

alt text

Zaten kabarcık ve RelativeLayout kullanarak içindeki metni yapmış:

<RelativeLayout android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 

      <ImageView android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:adjustViewBounds="true" 
       android:src="@drawable/badge" 
       android:layout_centerInParent="true"/> 

      <TextView android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textStyle="bold" 
         android:text="2" 
         android:layout_centerInParent="true" /> 
     </RelativeLayout> 

Ama bir yolunu bulamıyorum orada yerleştirmek ve aynı xml ile portre ve manzara üzerinde çalışmak. Burada iki kaynaklar vardır

<Button android:id="@+id/new_releases_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/ic_button_selector" 
      android:text="@string/new_releases_title" 
      android:textColor="#FFFFFF" 
      android:textSize="20sp" 
      android:gravity="center_vertical" 
      android:paddingLeft="12dp" 
      android:layout_marginTop="15dp" 
      android:layout_below="@id/coming_soon_button" 
      android:onClick="newReleaseClick" 
      android:layout_centerHorizontal="true" /> 

     <Button android:id="@+id/top_sellers_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/ic_button_selector" 
      android:text="@string/top_sellers_title" 
      android:textColor="#FFFFFF" 
      android:textSize="20sp" 
      android:gravity="center_vertical" 
      android:paddingLeft="12dp" 
      android:layout_marginTop="15dp" 
      android:layout_below="@id/new_releases_button" 
      android:onClick="topSellersClick" 
      android:layout_centerHorizontal="true" /> 

ve:

alt text alt text

nasıl xml yapmalıyım Activity yılında

Buttoms böylesin?

DÜZENLEME: iyi yaklaşım şimdiye kadar, ama hala çalışmıyor:

<?xml version="1.0" encoding="utf-8"?> 

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <Button android:id="@+id/discounts_button" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@drawable/ic_button_selector" 
       android:text="@string/discounts_title" 
       android:textColor="#FFFFFF" 
       android:textSize="20sp" 
       android:onClick="discountsClick" 
       android:layout_marginTop="40dp" 
       android:layout_marginLeft="20dp"/> 

     <RelativeLayout android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="top|left"> 

      <ImageView android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:adjustViewBounds="true" 
        android:src="@drawable/badge" 
        android:layout_centerInParent="true"/> 

      <TextView android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:textStyle="bold" 
          android:text="20" 
          android:layout_centerInParent="true" /> 
     </RelativeLayout> 
</FrameLayout> 

cevap

7

bir FrameLayout (yerine RelativeLayout ait) kullanın ve içine düğmesi ve görüntüyü koydu.

pozisyonu senin seviyor

android:layout_gravity="top|left" 
android:layout_marginTop="Xdp" 
android:layout_marginLeft="Xdp" 

aracılığıyla görüntü (sayı ile cirle) ve düğme.

+0

Bu, doğru bir yol gibi gözüküyor ama yine de o iş yapamaz. Rozete "marginTop" ve "marginLeft" ekleme mantıklıdır, ancak negatif olmalıdır. Bu, görünümün dışında konumlandırır. Bunun yerine, düğmeye "pozitif" marginTop ve "marginLeft" ekledim, ancak bu değerler göz ardı ediliyor. Henüz nedenini anlamadım. Soruyu şu ana kadarki en iyi yaklaşımla düzenleyeceğim. – Macarse

+0

evet, doğru. görüntüye negatif marj yok (bunun da işe yarayacağı halde denemedim), hem görüntü hem de düğme için üst/sol kenar boşluklarıyla çalışabilirsiniz. ama bu şekilde mantıklı geliyor: FrameLayout'un sol üst konumu resmin sol üst köşesidir, bu nedenle düğmeyi biraz sağa ve aşağıya taşımanız gerekir. –

+0

Cool, 'android: layout_gravity = "top | left" 'tuşunu ekledikten sonra düğmeyi çalıştırdı, ancak düğümü benim genişliğimden ve yüksekliğimden" wrap_content "olduğu için keser. Android gibi bir şeyi zorlamak istemiyorum: layout_height = "60dp" 'iyi görünüyor. Bunu çözmenin daha iyi bir yolu var mı? – Macarse

3

O FrameLayout ile kolay olmalı derdim:

<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" android:layout_marginTop="15dp"> 
     <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="15dip"> 
     <Button android:id="@+id/new_releases_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/ic_button_selector" 
     android:text="@string/new_releases_title" 
     android:textColor="#FFFFFF" 
     android:textSize="20sp" 
     android:gravity="center_vertical" 
     android:paddingLeft="12dp" 
     android:layout_below="@id/coming_soon_button" 
     android:onClick="newReleaseClick"/> 
    </FrameLayout> 
    <RelativeLayout android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <ImageView android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:adjustViewBounds="true" 
      android:src="@drawable/badge" 
      android:layout_centerInParent="true"/> 
     <TextView android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textStyle="bold" 
        android:text="2" 
        android:layout_centerInParent="true" /> 
    </RelativeLayout> 
</FrameLayout> 

Muhtemelen kenar boşluklarını ayarlamak gerekir.

DÜZENLEME:

android:layout_gravity="top|left" ekleme gibi görünecektir:

alt text

+0

Bu benim için çalışmadı. Düğmenin üstünde rozet görünür ve 'android: layout_marginTop' bir şekilde görmezden gelir. – Macarse

+0

Weird .. daha sonra cevapta güncellenmiş xml'i deneyin (dahili FrameLayout'un dolgularını ayarlamak isteyebilirsiniz). Ayrıca FrameLayout yerine RelativeLayout'u en üst düzey kapsayıcı olarak kullanmayı deneyin. –

+0

android: layout_gravity = "top | center" kelimesini her iki düğmeye ekler ve RelativeLayout herhangi bir fark yaratır mı? Kod ilk görüşte şimdiye kadar tamam görünüyor. –

İlgili konular