J'ai un ImageButton
et je veux montrer un texte et une image dessus. Mais quand j'essaye sur l'émulateur:
<ImageButton
Android:text="OK"
Android:id="@+id/buttonok"
Android:src="@drawable/buttonok"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
Je reçois l'image mais sans le texte. Comment puis-je afficher le texte? Aidez-moi, s'il vous plaît!
Comme vous ne pouvez pas utiliser Android:text
, je vous recommande d'utiliser un bouton normal et d'utiliser l'un des dessinables composés. Par exemple:
<Button
Android:id="@+id/buttonok"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:drawableLeft="@drawable/buttonok"
Android:text="OK"/>
Vous pouvez placer le dessinable où vous voulez en utilisant: drawableTop
, drawableBottom
, drawableLeft
ou drawableRight
.
UPDATE
Pour un bouton, cela fonctionne aussi très bien. Mettre Android:background
c'est bien!
<Button
Android:id="@+id/fragment_left_menu_login"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/button_bg"
Android:text="@string/login_string" />
Je viens d'avoir ce problème et fonctionne parfaitement.
Il est techniquement possible de mettre une légende sur un ImageButton
si vous voulez vraiment le faire. Il suffit de mettre un TextView
sur le ImageButton
en utilisant FrameLayout
. Rappelez-vous simplement de ne pas rendre la Textview
cliquable.
Exemple:
<FrameLayout>
<ImageButton
Android:id="@+id/button_x"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="@null"
Android:scaleType="fitXY"
Android:src="@drawable/button_graphic" >
</ImageButton>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:clickable="false"
Android:text="TEST TEST" >
</TextView>
</FrameLayout>
Les gars, j'ai besoin de développer le bouton de réglage et de déconnexion, j'ai utilisé le code ci-dessous.
<Button
Android:id="@+id/imageViewLogout"
Android:layout_width="100dp"
Android:layout_height="wrap_content"
Android:layout_margin="@dimen/size_30dp"
Android:layout_alignParentLeft="true"
Android:text="Settings"
Android:drawablePadding="10dp"
Android:background="@Android:color/transparent"
Android:layout_alignParentBottom="true"
Android:drawableTop="@drawable/logout" />
Vous pouvez utiliser un LinearLayout
au lieu d'utiliser Button
c'est un arrangement que j'ai utilisé dans mon application.
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_margin="20dp"
Android:background="@color/mainColor"
Android:orientation="horizontal"
Android:padding="10dp">
<ImageView
Android:layout_width="50dp"
Android:layout_height="50dp"
Android:background="@drawable/ic_cv"
Android:textColor="@color/offBack"
Android:textSize="20dp" />
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="10dp"
Android:text="@string/cartyCv"
Android:textColor="@color/offBack"
Android:textSize="25dp" />
</LinearLayout>
En fait, _Android:text
_ n’est pas un argument accepté par ImageButton
, mais, si vous essayez d’obtenir un bouton avec un arrière-plan spécifié (et non Android default), utilisez le _Android:background
_ xml attribut, ou le déclarer de la classe avec .setBackground();
J'ai résolu ce problème en plaçant les ImageButton
et TextView
dans un LinearLayout
à orientation verticale. Fonctionne très bien!
<LinearLayout
Android:id="@+id/linLayout"
Android:layout_width="80dp"
Android:layout_height="wrap_content"
Android:orientation="vertical" >
<ImageButton
Android:id="@+id/camera_ibtn"
Android:layout_width="60dp"
Android:layout_height="60dp"
Android:layout_gravity="center"
Android:background="@drawable/camera" />
<TextView
Android:id="@+id/textView2"
Android:layout_width="80dp"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:text="@string/take_pic"
Android:textColor="#FFFFFF"
Android:textStyle="bold" />
</LinearLayout>
vous pouvez utiliser plutôt un attribut Button
et Android: drawableTop (ou gauche, droite, bas).
Meilleur moyen:
<Button
Android:text="OK"
Android:id="@+id/buttonok"
Android:background="@drawable/buttonok"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"/>
Heres un exemple de cercle de Nice:
drawable/circle.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<solid
Android:color="#ff87cefa"/>
<size
Android:width="60dp"
Android:height="60dp"/>
</shape>
Et puis le bouton dans votre fichier XML:
<Button
Android:id="@+id/btn_send"
Android:layout_width="60dp"
Android:layout_height="60dp"
Android:background="@drawable/circle"
Android:text="OK"/>
ImageButton
ne peut avoir text
(ou, au moins, Android:text
ne figure pas dans ses attributs).
Le truc c'est:
Il semble que vous deviez utiliser Button
(et regarder drawableTop
ou setCompoundDrawablesWithIntrinsicBounds(int,int,int,int))
.