【问题标题】:Android app - basic icon button without textAndroid 应用 - 没有文字的基本图标按钮
【发布时间】:2019-08-05 08:26:03
【问题描述】:

如何制作没有文字或背景的基本图标按钮?例如,只是一个来自@drawables 的简单矢量图像,当单击它时,它会显示它周围的循环响应。我不希望图标有任何背景颜色。只是一个可以点击的图标,就是字面意思。

我只能通过创建menu 并将图标设置为itemapp: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>

【问题讨论】:

标签: android android-studio android-button


【解决方案1】:

先创建一个vector drawable然后添加到ImageViewlike 这个:

<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" />

【讨论】:

  • 这越来越近了。我必须添加android:clickable="true"android:focusable="true",但是波纹效果是方形的,而不是圆形的。
  • 其实我没注意到你改成了无边界。这实际上使它起作用了!谢谢堆,将其标记为正确。我知道有一种简单的方法可以做到这一点......
  • 哦,我还必须为其添加 4dp 填充。
  • 是的,无边界使它成为圆形波纹而不是方形。
  • @GCM 我想知道我从一开始就提供的答案有什么不同......?
【解决方案2】:

您可以为此使用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"

只要视图是可点击的,它就适用于任何视图

【讨论】:

  • 这会在图标后面创建背景颜色。此外,单击按钮不会产生任何连锁反应。
【解决方案3】:

是的,如果您愿意,您可以使用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>

【讨论】:

    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 2013-10-08
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    相关资源
    最近更新 更多