87 votes

Comment créer des boutons sans bordure dans Android

Le Android les lignes Directrices de Conception - dire à utiliser sans bordure des boutons (voir photo ci-dessous), mais n'explique pas comment. Quelqu'un a posé cette même question il y a quelques semaines ici: Comment créer standard sans bord des boutons (comme dans la conception guidline mentionné)? et il y avait une réponse marquée comme "la" réponse, mais je suis toujours perdu et je ne vois pas d'ajouter des commentaires à une question qui a été "fermé"

La réponse-er a dit

"Regarder dans le thème attributs buttonBarStyle, buttonBarButtonStyle, et borderlessButtonStyle"

mais je n'arrive toujours pas à comprendre comment l'utiliser effectivement ces choses. J'ai Googlé un peu et ne pouvais pas trouver quoi que ce soit, j'ai pensé que je venais de poser de nouveau la question, et j'espère que quelqu'un peut apporter un peu plus de détail sur la façon dont cela fonctionne.

enter image description here

144voto

Paul Drummond Points 1833

Je pensais que je l'avais résolu quand j'ai regardé ici il y a quelques semaines et a remarqué la réponse sur l'utilisation d'un fond transparent, mais ce n'est pas tout à fait assez bon car il empêche le bouton de mise en surbrillance lorsque pressé.

En outre, en définissant le style d' Widget.Holo.Button.Borderless n'est pas approprié, car il rend le bouton de limites à grand.

Pour comprendre cela, une fois pour toutes, j'ai vérifier le code source android pour la norme d'application de Calendrier et trouvé qu'il utilise les éléments suivants:

android:background="?android:attr/selectableItemBackground"

Cette façon de faire assure le bouton n'a pas de frontière et la taille correcte.

82voto

Dalc Points 181

Regardez ceci: http://developer.android.com/guide/topics/ui/controls/button.html#Borderless

L'attribut de votre balise Button ou ImageButton :

     style="?android:attr/borderlessButtonStyle"
 

23voto

WindRider Points 1363

Si vous utilisez ActionbarSherlock ...

 <Button 
  android:id="@+id/my_button" 
  style="@style/Widget.Sherlock.ActionButton" />
 

19voto

KarlKarlsom Points 2970

Il y a quelques jours un stumbeled sur ce nouveau.

Voici ma solution:

Cela se fait en 2 étapes: le Réglage de l'arrière-plan du bouton de l'attribut android:attr/selectableItemBackground crée vous un bouton avec de la rétroaction, mais pas de fond.

android:background="?android:attr/selectableItemBackground"

La ligne de fracture sans frontières bouton du reste de vous présentation est faite par une vue à l'arrière-plan android:attr/dividerVertical

android:background="?android:attr/dividerVertical"

Pour une meilleure compréhension, voici une mise en page pour un OK / Annuler sans frontières combinaison de boutons au bas de votre écran (comme dans l'image de droite ci-dessus).

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true">
        <View
            android:layout_width="match_parent"
            android:layout_height="1dip"
            android:layout_marginLeft="4dip"
            android:layout_marginRight="4dip"
            android:background="?android:attr/dividerVertical"
            android:layout_alignParentTop="true"/>
        <View
            android:id="@+id/ViewColorPickerHelper"
            android:layout_width="1dip"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="4dip"
            android:layout_marginTop="4dip"
            android:background="?android:attr/dividerVertical" 
            android:layout_centerHorizontal="true"/>
        <Button
            android:id="@+id/BtnColorPickerCancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@id/ViewColorPickerHelper"
            android:background="?android:attr/selectableItemBackground"
            android:text="@android:string/cancel" 
            android:layout_alignParentBottom="true"/>
        <Button
            android:id="@+id/BtnColorPickerOk"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:background="?android:attr/selectableItemBackground"
            android:text="@android:string/ok" 
            android:layout_alignParentBottom="true" 
            android:layout_toRightOf="@id/ViewColorPickerHelper"/>
    </RelativeLayout>

13voto

Mirko Points 1374

Ce code fonctionne pour moi:

 <View
    android:layout_width="match_parent"
    android:layout_height="1dip"
    android:background="?android:attr/dividerVertical" />

<LinearLayout
    style="?android:attr/buttonBarStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:measureWithLargestChild="true"
    android:orientation="horizontal"
    android:paddingLeft="2dip"
    android:paddingRight="2dip"
    android:paddingTop="0dip" >

    <Button
        android:id="@+id/cancel"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="onClickCancel"
        android:text="@string/cancel" />

     <Button
        android:id="@+id/info"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="onClickInfo"
        android:visibility="gone"
        android:text="@string/info" />

    <Button
        android:id="@+id/ok"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="onClickSave"
        android:text="@string/save" />
</LinearLayout>
 

Je montre 3 boutons en bas

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X