2015-03-28 24 views
5

Ich habe im Web für eine Woche oder so gesucht, um ein Beispiel oder ein Tutorial zu bekommen, wie man einen farbigen erhöhten Knopf, aber kein Glück macht.Wie mache ich einen androiden Button?

Ich möchte Folgendes in meiner App für eine bessere Benutzeroberflächenerfahrung implementiert werden.

Und ich kam mit der Kartenansicht rüber, aber wenn Sie ein großes Programm mit vielen Tasten darin schreiben, wird der XML-Code nur wegen dieser Kartenansicht größer.

Also, wenn es eine schnelle und einfache Lösung für die folgenden gibt, lass es mich wissen.

Danke

enter image description here

aktualisiert

  Normal button 

enter image description here

and with color 

enter image description here

+0

Verwenden Sie den standardmäßigen Material 'Button' Stil, setzen Sie den backgroundTint auf blau (oder eine Farbzustandsliste mit grau für den deaktivierten Zustand) und den Vordergrund auf'? Android: attr/textColorPrimaryInverse'. – alanv

+0

@alanv aber um die Welligkeit zu bekommen, muss man "" verwenden?attr/selectableItemBackground "' auf dem Vordergrund –

Antwort

5

Ich denke, dass Sie tatsächlich Höhe in Button wollen. Verwenden Sie die Karte nicht, da sie mehr Ressourcen benötigt. für Lutscher Geräte

verwenden
<Button 
    ... 
    android:stateListAnimator="@anim/my_animator" /> 

und in anim Ordner in Ressourcen erstellen Diesen my_animator.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:state_enabled="true"> 
     <set> 
      <objectAnimator android:propertyName="translationZ" 
          android:duration="@integer/button_pressed_animation_duration" 
          android:valueTo="@dimen/button_pressed_z_material" 
          android:valueType="floatType"/> 
      <objectAnimator android:propertyName="elevation" 
          android:duration="0" 
          android:valueTo="@dimen/button_elevation_material" 
          android:valueType="floatType"/> 
     </set> 
    </item> 
    <!-- base state --> 
    <item android:state_enabled="true"> 
     <set> 
      <objectAnimator android:propertyName="translationZ" 
          android:duration="@integer/button_pressed_animation_duration" 
          android:valueTo="0" 
          android:startDelay="@integer/button_pressed_animation_delay" 
          android:valueType="floatType"/> 
      <objectAnimator android:propertyName="elevation" 
          android:duration="0" 
          android:valueTo="@dimen/button_elevation_material" 
          android:valueType="floatType" /> 
     </set> 
    </item> 
    ... 
</selector> 
+0

es funktionierte aber mit dem folgenden Fehler ::: ** Konnte resource @ integer/button_pressed_animation_duration (5 ähnliche Fehler nicht gezeigt) "@ integer/button_pressed_animation_duration" in Attribut "Dauer" ist keine gültige Ganzzahl (5 ähnliche Fehler werden nicht angezeigt) ** Wie machst du einen farbigen Knopf? – silverFoxA

+0

Bitte aktualisiere mich mit den verwendeten Dimenswerten und den ganzzahligen Werten .. und wie stellst du die Farbe nur auf den Knopf wie die android angehobene taste – silverFoxA

+0

OK diese fehler sind nur für dimension und integer werte ..in ganzzahl verwenden sie einen wert zwischen 100 - 400 und in dimension verwenden 2dp - 6dp. – Ajeet

4

Sie können diese Alternative versuchen: eine xml erstellen in Ihrem ziehbar Ordner: cardlayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <gradient android:angle="90" 
       android:endColor="@color/background_gray" android:startColor="#ccc" /> 
      <corners android:radius="4dp" /> 
     </shape> 
    </item> 

    <item 
     android:left="0dp" 
     android:right="1.5dp" 
     android:top="0dp" 
     android:bottom="1.5dp"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@android:color/white"/> 
      <corners android:radius="4dp" /> 
     </shape> 
    </item> 
</layer-list> 

Nun kann jeder view (Button, ListRow oder Imageview) Sie möchten erhöhen. Legen Sie einfach den Hintergrund dieser Ansicht mit diesem Kartenlayout fest.

android:background="@drawable/cardlayout" 

NB ändern Sie die Hintergrundfarbe der Karte Layout nach Ihren Bedürfnissen.

2

Check out: -: android:elevation="2dp"

<Button 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:layout_height="60dp" 
    android:text="Raised Color Button" 
    android:textSize="15sp" 
    android:backgroundTint="#1E9D96" 
    android:textColor="@android:color/background_light" /> 
0

Sie verwenden können Aber es wird nur für Lollipop und höher funktionieren. Ich schlage vor, bei niedrigeren Versionen von Android eine Layerliste zu verwenden.