117 votes

Cette rubrique vous indique comment créer une nouvelle table de base de données dans l'affichage d'ébauche.

Je viens de vérifier les lignes directrices de conception et vous demandez-vous à propos de la sans bordure des boutons. Je goggled et essayé de trouver dans la source, mais ne peut pas réunir par moi-même. Est-ce normal widget Bouton, mais vous ajoutez une coutume (Android par défaut) de style? Comment faire de ces sans bordure des boutons (bien sûr, vous pouvez définir l'arrière-plan vide, mais alors je n'ai pas le diviseur)?

Voici des liens vers les lignes directrices de conception:

enter image description here

165voto

KarlKarlsom Points 2970

Pour effacer un peu de confusion:

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>

50voto

Diego V Points 674

Il suffit d’ajouter l’attribut de style suivantes dans votre `` tag :

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

Vous pouvez ensuite ajouter des séparateurs comme réponse de Karl.

22voto

Alejandro Cotroneo Points 1310

Réponse tardive, mais de nombreux points de vue. Que les Api < 11 n'est pas encore morts, pour ceux que cela intéresse ici est une astuce.

Laissez votre bac de la couleur souhaitée (peut être transparent). Puis donnez vos boutons un sélecteur par défaut de couleur transparente, et un peu de couleur lorsqu'il est pressé. De cette façon, vous aurez un bouton transparent, mais change de couleur lorsqu'il est pressé (comme holo). Vous pouvez également ajouter un peu d'animation (comme holo). Le sélecteur doit être quelque chose comme ceci:

res/drawable/selector_transparent_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" 
          android:exitFadeDuration="@android:integer/config_shortAnimTime">
     <item android:state_pressed="true"
         android:drawable="@color/blue" />

   <item android:drawable="@color/transparent" />
</selector>

Et le bouton doit avoir android:background="@drawable/selector_transparent_button"

PS: laissez-vous bac les diviseurs (android:divider='@android:drawable/... pour l'API < 11)

PS [Newbie]: vous devez définir ces couleurs dans values/colors.xml

18voto

user3042930 Points 106

Pour celui qui veut sans bordure des boutons mais toujours animée lorsque l'utilisateur clique dessus. Ajouter ceci dans le bouton.

style="?android:attr/borderlessButtonStyle"

Si vous vouliez un diviseur de / ligne entre eux. Ajouter ceci dans le linéaire de la mise en page.

style="?android:buttonBarStyle"

Résumé

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:orientation="horizontal"
   style="?android:buttonBarStyle">

    <Button
        android:id="@+id/add"
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/add_dialog" 
        style="?android:attr/borderlessButtonStyle"
        />

    <Button
        android:id="@+id/cancel"
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/cancel_dialog" 
        style="?android:attr/borderlessButtonStyle"
        />

</LinearLayout>

5voto

Dandre Allison Points 2434

À partir de la iosched application source , je suis venu avec cette ButtonBar classe:

/**
 * An extremely simple {@link LinearLayout} descendant that simply reverses the 
 * order of its child views on Android 4.0+. The reason for this is that on 
 * Android 4.0+, negative buttons should be shown to the left of positive buttons.
 */
public class ButtonBar extends LinearLayout {

    public ButtonBar(Context context) {
        super(context);
    }

    public ButtonBar(Context context, AttributeSet attributes) {
        super(context, attributes);
    }

    public ButtonBar(Context context, AttributeSet attributes, int def_style) {
        super(context, attributes, def_style);
    }

    @Override
    public View getChildAt(int index) {
        if (_has_ics)
            // Flip the buttons so that "OK | Cancel" becomes "Cancel | OK" on ICS
            return super.getChildAt(getChildCount() - 1 - index);

        return super.getChildAt(index);
    }

    private final static boolean _has_ics = Build.VERSION.SDK_INT >= 
                                        Build.VERSION_CODES.ICE_CREAM_SANDWICH;
}

Ce sera l' LinearLayout que le "OK" et "Annuler" boutons d'entrer dans, et se chargera de les mettre dans le bon ordre. Ensuite, placez ce dans la mise en page que vous voulez que les boutons:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:divider="?android:attr/dividerHorizontal"
          android:orientation="vertical"
          android:showDividers="middle">
    <!--- A view, this approach only works with a single view here -->
    <your.package.ButtonBar style="?android:attr/buttonBarStyle"
        android:id="@+id/buttons"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:weightSum="1.0">
        <Button style="?android:attr/buttonBarButtonStyle"
            android:id="@+id/ok_button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="@string/ok_button" />
        <Button style="?android:attr/buttonBarButtonStyle"
            android:id="@+id/cancel_button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="@string/cancel_button" />
    </your.package.ButtonBar>
</LinearLayout>

Cela vous donne l'apparence de la boîte de dialogue sans bordure des boutons. Vous pouvez trouver ces attributs dans le res dans le cadre. buttonBarStyle ne le diviseur vertical et le rembourrage. buttonBarButtonStyle est défini comme borderlessButtonStyle pour Holo thème, mais je crois que ce devrait être le plus robuste de manière à les afficher en tant que cadre veut l'afficher.

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