web-dev-qa-db-fra.com

Boutons sans frontières Android

Je déteste être la troisième personne à poser cette question, mais les précédentes deuxquestions n'ont pas semblé y répondre complètement. Les directives de conception Android détaillent les boutons sans bordure , mais pas comment les fabriquer. Dans l'une des réponses précédentes, il y avait une suggestion à utiliser:

style="@Android:style/Widget.Holo.Button.Borderless"

Cela fonctionne bien pour un thème Holo, mais j'utilise aussi beaucoup Holo.Light et 

style="@Android:style/Widget.Holo.Light.Button.Borderless"

Ne semble pas exister. Existe-t-il un moyen d'appliquer un style à de tels boutons sans bordure dans Holo.Light ou, mieux encore, d'appliquer simplement une balise sans bordure sans spécifier le thème auquel elle appartient, de sorte que l'application puisse choisir le style approprié au moment de l'exécution?

Holo.ButtonBar semble correspondre à ce que je cherche, sauf qu'il ne donne à aucun commentaire de la part de l'utilisateur.

En outre, existe-t-il un endroit dans la documentation qui répertorie les styles pouvant être appliqués et une description de ceux-ci? Peu importe combien je recherche et recherche dans la documentation, je ne trouve rien. Il y a juste une liste non descriptive si je fais un clic droit et édite le style.

Toute aide serait appréciée.

J'ai obtenu une réponse parfaite de javram et je voulais ajouter du code XML à toute personne intéressée par l'ajout des limites partielles que Google a adoptées.

Pour un diviseur horizontal, cela fonctionne très bien

<View
    Android:id="@+id/horizontal_divider_login"
    Android:layout_width="match_parent"
    Android:layout_height="1dp"
    Android:layout_marginLeft="8dp"
    Android:layout_marginRight="8dp"
    Android:background="@color/holo_blue" />

et ceci pour un vertical:

<View
     Android:id="@+id/vertical_divider"
     Android:layout_width="1dip"
     Android:layout_height="match_parent"
     Android:layout_marginBottom="8dp"
     Android:layout_marginTop="8dp"
     Android:background="@color/holo_blue" />
24
The Holo Dev

Découvrez ma réponse ici . En résumé, la solution correcte consiste à utiliser les éléments suivants:

Android:background="?android:attr/selectableItemBackground"
27
Paul Drummond

Ajoutez simplement l'attribut de style suivant dans votre balise Button:

style="?android:attr/borderlessButtonStyle"

source: http://developer.Android.com/guide/topics/ui/controls/button.html#Borderless

42
Diego V

Ce code va supprimer tout fond pour un bouton:

Android:background="@Android:color/transparent"
8
javram

Au risque de frapper un cheval mort, voici une autre option (peut-être meilleure). AppCompat v7 définit un style de bouton sans bordure. Si vous utilisez déjà la bibliothèque AppCompat, procédez comme suit:

<Button Android:text="@string/borderlessButtonText" style="@style/Widget.AppCompat.Button.Borderless" />

8
wtracy

Si n'importe qui cherche une solution légère pour obtenir le bouton sans frontière pour les API qui ne supportent pas le thème Holo (comme je le faisais depuis longtemps), je publie ma solution ci-dessous:

<View 
    Android:layout_height="1dp"
    Android:layout_width="match_parent"
    Android:background="#505154"
    Android:layout_marginLeft="10dp" Android:layout_marginRight="10dp"/>

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content" >

    <Button
        Android:id="@+id/btn_Reply"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center"
        Android:layout_weight="1"
        Android:background="@Android:color/transparent"
        Android:paddingBottom="15dp" Android:paddingTop="15dp"
        Android:textColor="#5c5966"
        Android:text="@string/btnReplyText"/>

    <View 
        Android:layout_height="fill_parent"
        Android:layout_width="1dp"
        Android:background="#505154" 
        Android:layout_marginBottom="7dp" Android:layout_marginTop="7dp"/>

    <Button
        Android:id="@+id/btn_Delete"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center"
        Android:layout_weight="1"
        Android:paddingBottom="15dp" Android:paddingTop="15dp"
        Android:textColor="#5c5966"
        Android:background="@Android:color/transparent"
        Android:text="@string/btnDeleteText" />

    <View 
        Android:layout_height="fill_parent"
        Android:layout_width="1dp"
        Android:background="#505154"
        Android:text="@string/btnReplyText"
        Android:layout_marginBottom="7dp" Android:layout_marginTop="7dp" />

    <Button
        Android:id="@+id/btn_Exit"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:layout_gravity="center"
        Android:text="@string/btnExitText"
        Android:paddingBottom="15dp" Android:paddingTop="15dp"
        Android:textColor="#5c5966"
        Android:background="@Android:color/transparent"/>
</LinearLayout>

Tout ce que vous avez à faire est de modifier les couleurs et le texte en fonction de votre propre arrière-plan. Bonne chance!

1
Anirudh