Android 带图标的圆形按钮
Android round button with icon
我正在尝试制作这样的按钮
Button Image but I cannot put the icon in front of the text. The button I made now looks like this button image now。所以,主要问题是如何让图标靠近文本前面?
这是我的按钮形状代码:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="50dp"
/>
<solid
android:color="#00A651"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="300dp"
android:height="20dp"
/>
</shape>
这是我用来实现按钮的代码 activity:
<Button
android:id="@+id/problem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/buttonshape"
android:drawableStart="@drawable/ic_rate_review_black_24dp"
android:textColor="#FFFFFF"
android:textSize="15sp"
android:text="@string/button_problem" />
从 buttonXml 中删除大小和填充减少半径
并将 paddingTop 和 paddinBottom 添加到您的
或者您也可以使用 TextView,因为按钮已经分配了一些填充。
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="10dp"
/>
<solid
android:color="#00A651"
/>
</shape>
一切都按照 Muhib Pirani 的建议进行。感谢他。
按钮的代码现在如下所示:
<Button
android:id="@+id/problem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/buttonshape"
android:drawableStart="@drawable/ic_rate_review_black_24dp"
android:drawablePadding="5dp"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:text="@string/button_problem"
android:textColor="#FFFFFF"
android:textSize="15sp" />
ButtonShape.xml 看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="50dp"/>
<solid
android:color="#00A651"
/> </shape>
圆角按钮+图标+文本
style="@style/Base.Widget.AppCompat.Button.Borderless"
这对我来说不需要太多定制
您可以使用 MaterialButton
:
<MaterialButton
style="@style/Widget.MaterialComponents.Button.IconOnly"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
.../>
与:
<style name="Widget.MaterialComponents.Button.IconOnly">
<item name="iconPadding">0dp</item>
<item name="android:insetTop">0dp</item>
<item name="android:insetBottom">0dp</item>
<item name="android:paddingLeft">12dp</item>
<item name="android:paddingRight">12dp</item>
<item name="android:minWidth">12dp</item>
<item name="android:minHeight">12dp</item>
<item name="iconGravity">textStart</item>
</style>
我正在尝试制作这样的按钮 Button Image but I cannot put the icon in front of the text. The button I made now looks like this button image now。所以,主要问题是如何让图标靠近文本前面?
这是我的按钮形状代码:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="50dp"
/>
<solid
android:color="#00A651"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="300dp"
android:height="20dp"
/>
</shape>
这是我用来实现按钮的代码 activity:
<Button
android:id="@+id/problem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/buttonshape"
android:drawableStart="@drawable/ic_rate_review_black_24dp"
android:textColor="#FFFFFF"
android:textSize="15sp"
android:text="@string/button_problem" />
从 buttonXml 中删除大小和填充减少半径
并将 paddingTop 和 paddinBottom 添加到您的 或者您也可以使用 TextView,因为按钮已经分配了一些填充。
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="10dp"
/>
<solid
android:color="#00A651"
/>
</shape>
一切都按照 Muhib Pirani 的建议进行。感谢他。
按钮的代码现在如下所示:
<Button
android:id="@+id/problem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/buttonshape"
android:drawableStart="@drawable/ic_rate_review_black_24dp"
android:drawablePadding="5dp"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:text="@string/button_problem"
android:textColor="#FFFFFF"
android:textSize="15sp" />
ButtonShape.xml 看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="50dp"/>
<solid
android:color="#00A651"
/> </shape>
圆角按钮+图标+文本
style="@style/Base.Widget.AppCompat.Button.Borderless"
这对我来说不需要太多定制
您可以使用 MaterialButton
:
<MaterialButton
style="@style/Widget.MaterialComponents.Button.IconOnly"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
.../>
与:
<style name="Widget.MaterialComponents.Button.IconOnly">
<item name="iconPadding">0dp</item>
<item name="android:insetTop">0dp</item>
<item name="android:insetBottom">0dp</item>
<item name="android:paddingLeft">12dp</item>
<item name="android:paddingRight">12dp</item>
<item name="android:minWidth">12dp</item>
<item name="android:minHeight">12dp</item>
<item name="iconGravity">textStart</item>
</style>