Voglio creare un pulsante personalizzato e ho bisogno che sia un cerchio. Come posso creare un pulsante circolare? Non penso che sia possibile con draw9patch.
Inoltre non so come creare un pulsante personalizzato!
Hai qualche suggerimento?
Voglio creare un pulsante personalizzato e ho bisogno che sia un cerchio. Come posso creare un pulsante circolare? Non penso che sia possibile con draw9patch.
Inoltre non so come creare un pulsante personalizzato!
Hai qualche suggerimento?
Risposte:
Usa il disegno XML in questo modo:
Salvare i seguenti contenuti come round_button.xml
nella drawable
cartella
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<shape android:shape="oval">
<solid android:color="#fa09ad"/>
</shape>
</item>
<item android:state_pressed="true">
<shape android:shape="oval">
<solid android:color="#c20586"/>
</shape>
</item>
</selector>
Effetto Materiale Android: Anche se FloatingActionButton
è una scelta migliore, se si vuole farlo utilizzando il selettore xml, creare una cartella drawable-v21
in res
e salvare un altro round_button.xml
lì con seguente codice XML
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#c20586">
<item>
<shape android:shape="oval">
<solid android:color="#fa09ad"/>
</shape>
</item>
</ripple>
E impostalo come sfondo di Button
in xml in questo modo:
<Button
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/round_button"
android:gravity="center_vertical|center_horizontal"
android:text="hello"
android:textColor="#fff" />
Importante:
Markushi ha scritto un widget pulsante cerchio con effetti sorprendenti. Clicca qui !
AngryTool per pulsante Android personalizzato
Puoi creare qualsiasi tipo di pulsante Android personalizzato con questo sito di strumenti ... Faccio un cerchio e un pulsante quadrato con angolo arrotondato con questo sito di strumenti. Visita potrebbe essere che ti aiuterò
Con la libreria ufficiale dei componenti materiali è possibile utilizzare l' MaterialButton
applicazione di uno Widget.MaterialComponents.Button.Icon
stile.
Qualcosa di simile a:
<com.google.android.material.button.MaterialButton
android:layout_width="48dp"
android:layout_height="48dp"
style="@style/Widget.MaterialComponents.Button.Icon"
app:icon="@drawable/ic_add"
app:iconSize="24dp"
app:iconPadding="0dp"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Rounded"
/>
Attualmente il app:iconPadding="0dp"
, android:insetLeft
, android:insetTop
, android:insetRight
, android:insetBottom
gli attributi sono necessari per centrare l'icona sul pulsante evitando spazio chilo in più.
Utilizzare l' app:shapeAppearanceOverlay
attributo per ottenere gli angoli arrotondati. In questo caso avrai un cerchio.
<style name="ShapeAppearanceOverlay.MyApp.Button.Rounded" parent="">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">50%</item>
</style>
Il risultato finale:
app:iconPadding="0dp"
di assicurarsi che l'icona sia centrata. Ho passato un sacco di tempo a provare il centro finché non ho trovato questo. Sembra una svista quell'app: iconGravity non ha un valore "centrale".
se si desidera utilizzare VectorDrawable e ConstraintLayout
<FrameLayout
android:id="@+id/ok_button"
android:layout_width="100dp"
android:layout_height="100dp"
android:foreground="?attr/selectableItemBackgroundBorderless"
android:background="@drawable/circle_button">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/icon_of_button"
android:layout_width="32dp"
android:layout_height="32dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:srcCompat="@drawable/ic_thumbs_up"/>
<TextView
android:id="@+id/text_of_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/icon_of_button"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginTop="5dp"
android:textColor="@android:color/white"
android:text="ok"
/>
</android.support.constraint.ConstraintLayout>
</FrameLayout>
sfondo del cerchio: circle_button.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="1000dp" />
<solid android:color="#41ba7a" />
<stroke
android:width="2dip"
android:color="#03ae3c" />
<padding
android:bottom="4dp"
android:left="4dp"
android:right="4dp"
android:top="4dp" />
</shape>
Per un pulsante dall'aspetto FAB questo stile su un MaterialButton
:
<com.google.android.material.button.MaterialButton
style="@style/Widget.MaterialComponents.ExtendedFloatingActionButton"
app:cornerRadius="28dp"
android:layout_width="56dp"
android:layout_height="56dp"
android:text="1" />
Risultato:
Se si modifica la dimensione, fare attenzione a utilizzare la metà della dimensione del pulsante come app:cornerRadius
.