J'utilise un ImageButton
. Mais je n'ai pas le surlignage quand on clique dessus. Je ai googlé et plusieurs ont suggéré d'utiliser le sélecteur où une autre image est affichée. Y a-t-il un moyen de contourner cela? en utilisant une seule image et en la mettant en surbrillance ou en lui donnant un effet de lueur. afin que l'utilisateur sache que le bouton a été cliqué.Android mettre en surbrillance une imagebutton lorsque vous cliquez sur
Répondre
Ce n'est en fait pas très difficile à faire. Vous n'avez même pas besoin de créer 2 fichiers .png séparés ou quelque chose comme ça. Par exemple, si vous voulez avoir un bouton qui a une pente, puis le changer lorsque le bouton est pressé:
Étape 1: Créer gradient de bouton par défaut (drawable/de default_button.xml):
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="3dp" />
<gradient android:endColor="#8ba0bb" android:startColor="#43708f" android:angle="90" />
<stroke android:width="1dp" android:color="#33364252" />
</shape>
Étape 2: Création bouton par défaut gradient pressé (étirable/default_button_pressed.xml):
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="3dp" />
<gradient android:endColor="#43708f" android:startColor="#8ba0bb" android:angle="90" />
<stroke android:width="1dp" android:color="#33364252" />
</shape>
Étape 3: Création sélecteur (étirable/default_button_selector.xml):
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@drawable/default_button_pressed" />
<item android:drawable="@drawable/default_button" />
</selector>
Étape 4 (en option): Créer un style pour le bouton (valeurs/style.xml):
<resources>
<style name="DefaultButton">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">@drawable/default_button_selector</item>
</style>
</resources>
Étape 5: utilisez le bouton (mise en page/main.xml):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<button style="@style/DefaultButton" />
</RelativeLayout>
Comme vous pouvez le voir, ce n'est pas particulièrement difficile à faire.
lol @Zack 'Comme vous pouvez le voir, ce n'est pas particulièrement difficile à faire. ' –
C'est sympa car vous pouvez facilement ajouter un certain nombre de boutons en utilisant ce même style. –
Que faire si nous avons besoin de boutons avec des images de fond différentes? – Kishore
Afin de ne pas avoir à définir plusieurs drawable pour chaque bouton, je définis l'attribut de filtre de couleur du bouton image dans un écouteur tactile.
Code Voir ici dans un autre post:
+1 pour cette solution solide. –
Sans avoir à créer plusieurs images (comprimés, etc normale) et même ne pas créer sélecteur. Utilisez setOnTouchListener plutôt que setOnClickListener. Le code ci-dessous vous donnera la superposition grise sur l'article cliqué.
((ImageButton)findViewById(R.id.myImageBtn)).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
ImageButton view = (ImageButton) v;
view.getBackground().setColorFilter(0x77000000, PorterDuff.Mode.SRC_ATOP);
v.invalidate();
break;
}
case MotionEvent.ACTION_UP:
// Your action here on button click
case MotionEvent.ACTION_CANCEL: {
ImageButton view = (ImageButton) v;
view.getBackground().clearColorFilter();
view.invalidate();
break;
}
}
return true;
}
});
Cela a fonctionné pour moi. Veillez également à effacer le filtre de couleur sur ACTION_UP. –
Mon ADT ne savait pas ce que 'PorterDuff' était, donc suffixe avec 'android.graphics' (android.graphics.PorterDuff.Mode.SRC_ATOP) pour l'achèvement du code laissé à l'esprit – 1owk3y
m'a beaucoup aidé, merci! –
J'ai réussi à le faire !! D'abord, vous déclarez buttonStyle.xml dans le dossier drawable.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/button_pressed" />
<item
android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/button_pressed" />
<item android:drawable="@drawable/button_normal" />
</selector>
Ensuite, vous créez button_pressed.xml dans le dossier drawable.
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="@color/semiTransparentGnfrBlueColor" />
<stroke android:width="10dp" android:color="@android:color/transparent" />
</shape>
Après cela, vous créez button_normal.xml dans le dossier drawable.
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadiusRatio="3"
android:shape="rectangle">
<solid android:color="@color/gnfrBlueColor"/>
<stroke android:width="10dp" android:color="@android:color/transparent" />
</shape>
Vous pouvez utiliser des couleurs par défaut, mais si vous voulez le faire comme moi, vous devez avoir un fichier nommé couleurs.xml dans le dossier des valeurs et ces valeurs à l'intérieur:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="gnfrBlueColor" type="color">#2A3748</item>
<item name="semiTransparentGnfrBlueColor" type="color">#602A3748</item>
<integer-array name="androidcolors">
<item>@color/gnfrBlueColor</item>
<item>@color/semiTransparentGnfrBlueColor</item>
</integer-array>
</resources>
Enfin, vous réglez ce paramètre sur votre bouton ou tout autre:
savedAccountLoginButton.SetBackgroundResource(Resource.Drawable.buttonStyle);
AVIS QUE Je mets un coup avec la couleur transparente parce que quand vous set backgroundresource votre bouton devient plus grand et avec cette astuce il reste original.
C'est la seule façon de pouvoir archiver cela par programme.
Si vous voulez faire en XML:
<Button
android:text="ENTRAR"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@drawable/buttonstyle"
android:textColor="@color/white"
android:textSize="18sp"
android:id="@+id/button1" />
- 1. Problème Android sur Widget ImageButton cliquez sur
- 2. mettre à jour une activité lorsque vous cliquez sur notification
- 3. se bloque Android lorsque vous appelez ImageButton
- 4. Empêche la surbrillance du texte lorsque vous cliquez sur
- 5. Cliquez sur ImageButton
- 6. Android: comment ajouter l'opacité sur ImageButton cliquez?
- 7. Android: obtenir l'ID de ImageButton généré dynamiquement lorsque vous cliquez sur
- 8. Comment mettre en surbrillance un TextView ou LinearLayout lorsque vous cliquez dessus?
- 9. Mettre en surbrillance bord sur Dessiner dans Android
- 10. Désactiver et mettre en surbrillance une ligne dans gridview lorsque vous cliquez sur le bouton supprimer le champ de commande
- 11. jQuery: fadeout une image lorsque vous cliquez sur un ImageButton ASP.NET
- 12. mettre en surbrillance le mot sur android
- 13. mettre en surbrillance tr/td en direct cliquez, mais ne pas basculer si vous cliquez sur entrée/sélectionnez
- 14. Android textView disparaît lorsque vous cliquez dessus
- 15. L'onglet personnalisé disparaît lorsque vous cliquez sur?
- 16. Mettez en surbrillance les éléments liés lorsque vous cliquez sur "focus"
- 17. Évitez de mettre en surbrillance les éléments du menu déroulant Bootstrap de Twitter lorsque vous cliquez en dehors du menu
- 18. lorsque vous cliquez sur editText afficher le clavier android
- 19. comment désactiver le bouton lueur lorsque vous cliquez sur android
- 20. android - comment déplacer une image lorsque vous cliquez dessus?
- 21. force fermer lorsque vous cliquez sur l'élément de menu android
- 22. Réduire l'application lorsque vous cliquez sur le bouton Précédent android
- 23. Surligner Android ImageButton onclick
- 24. Ouvrez le programme android lorsque vous cliquez sur l'url
- 25. Modifier l'image lorsque vous cliquez sur l'élément dans un GridView
- 26. Ouvrir le cadre lorsque vous cliquez sur
- 27. Ne pas mettre en surbrillance la ligne de vue de table lorsque vous appuyez sur
- 28. Les options du menu Android ne clignotent pas lorsque vous cliquez/appuyez sur
- 29. Mettez en surbrillance article de liste personnalisé lorsque long cliquez
- 30. Modifier JListes lorsque vous cliquez sur JRadioButton
Pouvez-vous montrer le code que vous utilisez pour créer le bouton d'image? – Cristian