Android 应用程序 - 没有文本的基本图标按钮
Android app - basic icon button without text
如何制作没有文字或背景的基本图标按钮?例如,@drawables 中的一个简单矢量图像,单击时会显示其周围的圆形响应。我不希望图标有任何背景颜色。只是一个可以点击的图标,就是这样。
我只能通过创建 menu
并将图标设置为 item
和 app:showAsAction="always"
来弄清楚如何做到这一点。看来必须有更好的方法来做到这一点。
编辑:这是我想要实现的示例。这是非常基本的。只是一个可点击的图标,触摸时具有响应反馈。 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>
您可以为此使用 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"
如果视图是可点击的,它将适用于任何视图
First create a vector drawable
and then add to the ImageView
like
this:
<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" />
是的,如果您愿意,可以使用 ImageView
,但如果您想自己生成完整的图像(包括 frame/borders),则不必走那么远。您实际上可以使用普通的 View
(除非您必须明确提供 android:layout_width/height
)。只需使用 Button
并让 android:background
在图像之间指定 select 或 select。
<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>
如何制作没有文字或背景的基本图标按钮?例如,@drawables 中的一个简单矢量图像,单击时会显示其周围的圆形响应。我不希望图标有任何背景颜色。只是一个可以点击的图标,就是这样。
我只能通过创建 menu
并将图标设置为 item
和 app:showAsAction="always"
来弄清楚如何做到这一点。看来必须有更好的方法来做到这一点。
编辑:这是我想要实现的示例。这是非常基本的。只是一个可点击的图标,触摸时具有响应反馈。 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>
您可以为此使用 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"
如果视图是可点击的,它将适用于任何视图
First create a
vector drawable
and then add to theImageView
like this:
<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" />
是的,如果您愿意,可以使用 ImageView
,但如果您想自己生成完整的图像(包括 frame/borders),则不必走那么远。您实际上可以使用普通的 View
(除非您必须明确提供 android:layout_width/height
)。只需使用 Button
并让 android:background
在图像之间指定 select 或 select。
<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>