Quiero crear un botón personalizado y necesito que sea un círculo. ¿Cómo puedo crear un botón circular? No creo que eso sea posible con draw9patch.
¡Tampoco sé cómo hacer un botón personalizado!
¿Tienes alguna sugerencia?
Quiero crear un botón personalizado y necesito que sea un círculo. ¿Cómo puedo crear un botón circular? No creo que eso sea posible con draw9patch.
¡Tampoco sé cómo hacer un botón personalizado!
¿Tienes alguna sugerencia?
Respuestas:
Use xml dibujable de esta manera:
Guarde los siguientes contenidos como round_button.xml
en la drawable
carpeta
<?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>
Android material Efecto: A pesar de que FloatingActionButton
es una mejor opción, si usted quiere hacerlo utilizando el selector xml, crear una carpeta drawable-v21
en res
y salvar a otro round_button.xml
allí con XML siguiente
<?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>
Y configúrelo como fondo de Button
xml de esta manera:
<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 escribió un widget de botón circular con efectos sorprendentes. Haga clic aqui !
AngryTool para botón personalizado de Android
Puede hacer cualquier tipo de botón personalizado de Android con este sitio de herramientas ... hago un círculo y un botón cuadrado con una esquina redonda con este sitio de herramientas. Visítelo, tal vez lo ayude.
Con la biblioteca oficial de Componentes de material puede usar la MaterialButton
aplicación de un Widget.MaterialComponents.Button.Icon
estilo.
Algo como:
<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"
/>
Actualmente, el app:iconPadding="0dp"
, android:insetLeft
, android:insetTop
, android:insetRight
, android:insetBottom
se necesitan atributos para centrar el icono en el botón evitando carnes de más espacio.
Usa el app:shapeAppearanceOverlay
atributo para obtener esquinas redondeadas. En este caso tendrás un círculo.
<style name="ShapeAppearanceOverlay.MyApp.Button.Rounded" parent="">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">50%</item>
</style>
El resultado final:
app:iconPadding="0dp"
garantizar que el ícono esté centrado. Me quemé un montón de tiempo intentando centrarme hasta que encontré esto. Parece un descuido esa aplicación: iconGravity no tiene un valor "central".
si quieres usar VectorDrawable y 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>
fondo del círculo: 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>
Para un botón de aspecto FAB este estilo en 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" />
Resultado:
Si cambia el tamaño, tenga cuidado de usar la mitad del tamaño del botón como app:cornerRadius
.