Android应用程序 - 基本图标按钮,无文本



如何在没有文本或背景的情况下制作基本图标按钮?例如,仅来自@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" />

您可以使用MaterialButtonImageButton甚至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>

最新更新