2010-12-02 10 views
24

J'ai un bouton personnalisé mise en pagemarge Android bouton personnalisé

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
     <shape> 
      <gradient android:startColor="@color/pres1" 
       android:endColor="@color/pres2" android:angle="270" /> 
      <stroke android:width="5dp" android:color="@color/stro3" /> 
      <corners android:radius="5dp" /> 
      <padding android:left="10dp" android:top="20dp" 
       android:right="10dp" android:bottom="20dp" /> 
     </shape> 
    </item> 
    <item android:state_focused="true"> 
     <shape> 
      <gradient android:endColor="@color/focu1" 
       android:startColor="@color/focu2" android:angle="270" /> 
      <stroke android:width="5dp" android:color="@color/stro2" /> 
      <corners android:radius="5dp" /> 
      <padding android:left="10dp" android:top="20dp" 
       android:right="10dp" android:bottom="20dp" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <gradient android:endColor="@color/norm1" 
       android:startColor="@color/norm2" android:angle="270" /> 
      <corners android:radius="5dp" /> 
      <padding android:left="10dp" android:top="20dp" 
       android:right="10dp" android:bottom="20dp" /> 
     </shape> 
    </item> 

</selector> 

Et pour le dessous Étalez

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:background="@color/all_white"> 

    <TextView android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:text="@string/hello" 
     android:textColor="@color/all_red" /> 

    <Button android:id="@+id/mq_categories" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:text="Browse Quiz Categories" 
     android:background="@drawable/custom_button" /> 
    <Button android:id="@+id/mq_random" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:text="Enter Random Quiz" 
     android:background="@drawable/custom_button" /> 

</LinearLayout> 

sortie suivante est générée

alt text

Je dois ajouter une marge entre les boutons, Toute aide appréciée ..

+0

Bonjour, Je suis à la recherche des couleurs exactes que ces boutons, pouvez-vous s'il vous plaît poster le code hexadécimal des couleurs? Je vous remercie! – idish

Répondre

28

suffit de le faire de cette façon

<Button android:id="@+id/mq_categories" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Browse Quiz Categories" 
    android:background="@drawable/custom_button" 
    android:layout_marginBottom="5dp"/> 

De cette façon, vous définissez une marge de 5 densité de pixels indépendants sur le fond de votre premier bouton.

+1

Oui, mais pourquoi la marge disparaît-elle? Même si layout_margin est spécifié dans le style buttom personnalisé, il semble être ignoré! – HRJ

+8

Cela implique que je dois définir des marges (ou padding) sur TOUTES mes vues de bouton. Cela ne peut-il pas être fait avec un thème? (Sans définir le rembourrage sur toutes les vues dans l'application? Http://developer.android.com/guide/topics/ui/themes.html#ApplyATheme) – Diederik

+0

Cela a fonctionné très bien. –

1

Plutôt que d'utiliser LinearLayout, utilisez RelativeLayout pour que les marges puissent être définies de toutes les manières possibles. Vive

+0

Pourriez-vous expliquer ce que vous voulez dire? Je ne le comprends pas vraiment. –

+0

Dans Layout main.xml lorsque vous le gonflez dans l'interface utilisateur. Il devrait y avoir LinearLayout. Là, vous pouvez utiliser RalativeLayout et définir les marges et les emplacements des boutons en conservant le TextView de root. – Ashay

1

J'ai eu le même problème et la solution ne semble pas être là. Après avoir essayé deux choses suivantes a fait l'affaire pour moi,

  1. Définir la mise en page bouton personnalisé comme cela se fait dans la question
  2. res intérieur> Valeurs> fichier styles.xml, ajoutez le nouveau style comme ci-dessous,

    <style name="Widget.Button_Custom" parent="android:Widget"> 
        <item name="android:layout_margin">5dp</item> 
        <item name="android:background">@drawable/button_custom</item> 
    </style> 
    
  3. Utilisez le style dans votre mise en page

,

<?xml version="1.0" encoding="utf-8"?> 
<Button android:id="@+id/mq_categories" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:text=" 
     android:background="@drawable/custom_button" 
     style="@style/Widget.Button_Custom" 
/> 

Cela devrait le faire. Outre la marge, vous pouvez définir de nombreuses autres propriétés dans la balise de style. J'espère que cela pourra aider!