android - style de bouton

le bouton Normal ressemble à:

alt text

maintenant, s'il vous plaît faites-moi savoir, comment puis-je faire un bouton simple comme un bouton Image attaché (i.e. bouton Coin forme est ronde et aussi il n'y a pas d'espace entre deux boutons)

alt text

24
demandé sur skaffman 2010-12-20 14:12:06
la source

8 ответов

9-patch fonctionnerait bien ici, mais j'essaie de les éviter car c'est difficile pour moi de les faire :(

Vous pouvez essayer d'avoir un selector et en utilisant une forme pour chaque état:

la forme ressemblerait à ceci:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle">

    <solid android:color="#AAFFFFFF"/>

    <corners android:bottomRightRadius="7dp"
        android:bottomLeftRadius="7dp" 
        android:topLeftRadius="7dp"
        android:topRightRadius="7dp"/>
</shape>
23
répondu Macarse 2013-05-30 23:15:43
la source

1 - créer des formes (avec des couleurs souhaitées) pour appuyé et relâché unis

Pour créer les formes, je voudrais suggérer ce grand site le fera pour vous: http://angrytools.com/android/button/

drawable\botton_shape_pressed.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="@color/pressed_button_background"
        android:endColor="@color/pressed_button_background"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

drawable\botton_shape_released.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="@color/released_button_background"
        android:endColor="@color/released_button_background"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

2 - créer un sélecteur pour les deux formes

drawable\botton_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/botton_shape_pressed"
          android:state_pressed="true" />
    <item android:drawable="@drawable/botton_shape_pressed"
          android:state_selected="true" />
    <item android:drawable="@drawable/botton_shape_released" />
</selector>

3 - Utilisez le sélecteur pour le bouton

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/test"
    android:textColor="@color/blue_text"
    android:onClick="testOnClickListener"
    android:background="@drawable/botton_selector" />
25
répondu Asaf Pinhassi 2014-09-10 17:58:34
la source

vous devez créer un 9-patch drawable. Pour qu'il n'y ait pas d'espace (marge) entre les boutons, vous devez créer la mise en page appropriée en XML et régler la marge à 0.

5
répondu kgiannakakis 2010-12-20 14:18:51
la source

Créer un patch Neuf drawable qui est facile avec draw9patch (partie d'android/outils) et ensuite appliquer des styles et des thèmes... le tutoriel de ce lien (Androgames.net) devrait vous obtenir a commencé.

4
répondu Mike 2011-02-28 10:18:16
la source

recherchez le code source foursquared et recherchez le bouton segmenté.fichier java, c'est le fichier qui implémente les boutons affichés dans l'image.

4
répondu Thiago 2011-06-22 22:40:49
la source

pour le style du texte, vous pouvez ajouter ceci aux chaînes.xml

    <style name="ButtonText">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">#ffffff</item>
    <item name="android:gravity">center</item>
    <item name="android:layout_margin">3dp</item>
    <item name="android:textSize">30dp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:shadowColor">#000000</item>
    <item name="android:shadowDx">1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">2</item>
    </style>

et l'appeler dans le main.bouton xml

 style="@style/ButtonText"

et une méthode alternative avec laquelle vous pouvez jouer est la création dans @drawable/btn_black avec ce qui suit...

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid
                android:color="#343434" />
            <stroke
                android:width="1dp"
                android:color="#171717" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                android:startColor="#343434"
                android:endColor="#171717"
                android:angle="270" />
            <stroke
                android:width="1dp"
                android:color="#171717" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>
3
répondu droopie 2012-10-19 11:10:37
la source

vous pouvez également utiliser ImageView dans votre fichier xml et que donner true onClickable et onFocusable puis créer la méthode onClick event sur le code d'arrière-plan et donner le nom de la méthode sur xml , de sorte qu'au lieu de traiter toutes les questions de forme ou de bouton, vous mettez juste l'imageview là et le faire agir comme un bouton.Voici un exemple de code pour vous

<ImageView
            android:id="@+id/test"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:focusable="true"
            android:onClick="testClickEvent"
            android:paddingRight="8dip"
            android:paddingBottom="8dip"
            android:src="@drawable/testImg"/>

comme je l'ai dit sur le côté arrière créer la méthode avec le signe comme ceci et cela fera le travail

public void testClickEvent(View v){}

Puis mettre en œuvre en ce que vous voulez dans cette méthode

1
répondu Burak Dede 2010-12-20 16:46:58
la source

button_primary.xml

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">

        <gradient
            android:angle="270"
            android:endColor="@color/background"
            android:startColor="@color/background" />

        <corners android:radius="1dp" />

        <stroke
            android:width="2px"
            android:color="@color/colorPrimary3" />

    </shape>

appel style= "@style/button_primary"

0
répondu Samet öztoprak 2017-09-13 17:46:59
la source

Autres questions sur