android - 带有图标和文本的按钮的填充可绘制
问题描述
我试图在我的自定义按钮上有一个图标和文本。我希望两者都居中。为此,我使用 phillipcalvin-iconbutton。这很好用,但是设置的可绘制对象没有任何填充,所以它看起来像这样:
我试图创建另一个具有相同资源的可绘制对象,该资源具有如下填充:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="3dp"
android:left="3dp"
android:right="3dp"
android:top="1dp">
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_done"
>
<padding
android:left="50dp"
android:top="50dp"
android:right="50dp"
android:bottom="50dp"
/>
</item>
</selector>
</item>
这并没有什么不同。
我不想使用某种布局,因为我设置了 wrap aTextView
和 aImageView
因为我松开了按钮动画。
知道如何解决这个问题吗?
以防万一您想查看我的自定义按钮:
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="@color/darkRipple">
<item android:id="@android:id/mask"
android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp"
tools:targetApi="lollipop">
<shape android:shape="rectangle">
<solid android:color="@color/darkRipple" />
<corners android:radius="7dp" />
</shape>
</item>
<item android:id="@android:id/background"
android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp">
<shape android:shape="rectangle">
<corners android:radius="7dp" />
<solid android:color="@color/dark" />
<size android:width="110dp" android:height="40dp" />
</shape>
</item>
</ripple>
这是我使用它的方式:
<com.phillipcalvin.iconbutton.IconButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@drawable/btn_dark"
android:drawableLeft="@drawable/btn_ic_done"
app:iconPadding="10dp"
android:text="DONE"
android:textColor="@color/White"/>
解决方案
我认为解决该问题的一种方法是将用作 drawableLeft 的图像(在本例中为 android:drawableLeft="@drawable/btn_ic_done")作为新的图像资源导入到 android studio。这将允许您在导入图像时为图像设置填充(或者您可以使用一些外部图像编辑器为图像设置填充)。
实现这一目标的步骤:
右键单击 res 文件夹
res -> new -> 图片资源
[根据您的需要自定义图像][1]
[1]: https://i.stack.imgur.com/6Weu6.png