J'essaie d'ajouter un badge à l'un des boutons de mon activité. En ce moment j'essaye de faire le xml. Le bouton avec le badge, devrait ressembler à ceci:Positionner une bulle de badge sur le côté supérieur gauche d'un bouton
J'ai déjà fait la bulle et le texte à l'intérieur à l'aide d'un RelativeLayout
:
<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>
Mais je ne peux pas trouver un moyen pour le placer là et le faire travailler sur le portrait et le paysage avec le même xml.
Les buttoms dans le Activity
sont comme ceci:
<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" />
et voici les deux ressources:
Comment dois-je faire le xml?
EDIT: Meilleure approche à ce jour, mais il ne fonctionne toujours pas:
<?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>
Cela ressemble à la façon correcte mais je ne peux toujours pas le faire fonctionner. Il est logique d'ajouter 'marginTop' et' marginLeft' au badge, mais ils devraient être négatifs. Cette position en dehors de la vue. Donc, à la place, j'ai ajouté 'marginTop' et' marginLeft' au bouton, mais ces valeurs sont ignorées. Je ne pouvais pas encore comprendre pourquoi. Je vais éditer la question avec la meilleure approche jusqu'à présent. – Macarse
oui, c'est correct. aucune marge négative à l'image (bien que je n'ai pas essayé si cela fonctionnerait aussi bien), vous pouvez travailler avec les marges haut/gauche pour l'image et le bouton que vous le souhaitez. mais cela a du sens de cette façon: la position en haut à gauche de la FrameLayout est le coin supérieur gauche de l'image, donc vous devez déplacer le bouton un peu vers la droite et vers le bas. –
Cool, en ajoutant 'android: layout_gravity =" top | left "' au bouton a fait fonctionner, mais il coupe le bouton puisque ma largeur et la hauteur de mon parent sont "wrap_content". Je ne veux pas forcer quelque chose comme 'android: layout_height =" 60dp "' qui a l'air bien. Toute idée d'une meilleure façon de résoudre cela? – Macarse