J'ai quelques boutons comme celui-ci dans mon application:
<Button
android:id="@+id/bSearch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="Search"
android:textSize="24sp" />
J'essaye de créer un même bouton avec du texte et une icône. android: drawableLeft ne fonctionne pas pour moi (peut-être que ça le ferait, mais je ne sais pas comment définir une hauteur maximale pour l'icône).
J'ai donc créé un LinearLayout avec un ImageView et un TextView et l'ai fait agir comme un bouton:
<LinearLayout
android:id="@+id/bSearch2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/btn_default"
android:clickable="true"
android:padding="16dp"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:adjustViewBounds="true"
android:maxHeight="30dp"
android:maxWidth="30dp"
android:scaleType="fitCenter"
android:src="@drawable/search_icon" />
<TextView
android:id="@+id/tvSearchCaption"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="24sp"
android:paddingRight="30dp"
android:gravity="center"
android:text="Search" />
</LinearLayout>
Mon nouveau bouton est exactement ce que je veux (taille de police, icône et placement du texte). Mais cela ne ressemble pas à mes boutons par défaut:
J'ai donc essayé de changer l'arrière-plan et la couleur du texte de mon nouveau bouton:
Button Search = (Button) findViewById(R.id.bSearch);
LinearLayout bSearch2 = (LinearLayout) findViewById(R.id.bSearch2);
bSearch2.setBackground(bSearch.getBackground());
TextView tvSearchCaption = (TextView)findViewById(R.id.tvSearchCaption);
tvSearchCaption.setTextColor(bSearch.getTextColors().getDefaultColor());
Cela donne un résultat étrange, mon ancien bouton, est foiré:
Lorsque je change l'ordre de ces deux boutons dans le XML, donc le "nouveau bouton" passe en premier, cela fait un autre résultat étrange:
Maintenant, j'ai remarqué que lorsque j'essaye d'appuyer sur l'ancien bouton, le nouveau est pressé.
Des idées?