如何在没有文本或背景的情况下制作基本图标按钮?例如,仅来自@Drawables的简单矢量图像,当单击时,它显示了周围的圆形响应。我不希望图标具有任何背景颜色。只是可以单击的图标,实际上就是它。
我只能通过创建menu
并将图标设置为带有app:showAsAction="always"
的item
来弄清楚如何做到这一点。似乎必须有一种更好的方法来做到这一点。
编辑:这是我想要实现的示例。这是非常基本的。只需触摸时带有响应反馈的可点击图标即可。https://material-ui.com/components/buttons/#icon-buttons
与创建以下内容完全相同。我只是认为可能有一种更简单的方法可以做到这一点,而不必创建和加载一个单个图标的菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.mycompany.myapp.MainActivity">
<item
android:id="@+id/action_contacts"
android:icon="@drawable/ic_contacts_24"
android:title="@string/action_contacts"
app:iconTint="@android:color/white"
app:showAsAction="always" />
</menu>
首先创建一个
vector drawable
,然后添加到ImageView
这个:
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
app:srcCompat="@drawable/ic_delete" />
您可以使用MaterialButton
,ImageButton
甚至ImageView
。这是您如何使用ImageView
...
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:background="?attr/selectableItemBackground"
android:src="@drawable/your_icon" />
您需要做的就是设置selectableItemBackground
,这将使用您的主题的主要颜色(或者也许是次要颜色,我不记得(。
现在,如果您想要有其他颜色以获得纹章效果,例如灰色波纹,那么您可以自己创建可绘制的颜色...
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#dddddd">
<item android:id="@android:id/mask">
<color android:color="#dddddd" />
</item>
</ripple>
并在下面设置视图背景..
android:background="?attr/selectableItemBackground"
它将与任何视图一起使用,前提是该视图可单击
是的,如果愿意,可以使用ImageView
,但是如果您要生成完整的图像(包括帧/边框(,则不必走那么远。您实际上可以使用普通的View
(除了必须明确提供android:layout_width/height
(。只需使用Button
并使android:background
指定将在图像之间进行选择的选择器。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/clear1" android:state_pressed="true"/>
<item android:drawable="@drawable/clear0"/>
</selector>