【问题标题】:Material Design Button without Shadow没有阴影的材料设计按钮
【发布时间】:2016-10-31 11:28:14
【问题描述】:

我最近开始了 android 开发,但我有点挣扎。 我阅读了有关创建可绘制对象等的不同文章和教程。


现状

我创建了以下按钮:

使用以下代码:

    <android.support.v7.widget.AppCompatButton
        android:id="@+id/login_btn_facebook"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:drawableStart="@drawable/ic_btn_login_facebook"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:text="Continue with Facebook"
        android:textColor="#fff"
        app:backgroundTint="#3b5998"/>

    <android.support.v7.widget.AppCompatButton
        android:id="@+id/login_btn_google"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:drawableStart="@drawable/ic_btn_login_google"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:text="Continue with Google"
        app:backgroundTint="#ffffff" />

现在我实际上只需要一个小改动:
我不想有海拔。我希望按钮是“扁平的”,并且仅在单击时显示阴影效果。

有没有简单的方法来做到这一点?

已经谢谢你了!


更新:
我需要将 API 级别 19 作为最低 SDK 版本。

【问题讨论】:

  • this 似乎达到了你想要的效果
  • 您的查询解决了吗?

标签: android button material-design flat


【解决方案1】:

您有两种选择:

  1. 通过向您的 XML 按钮添加 XML 属性:

试试这个:android:stateListAnimator="@null"

  1. 通过添加另一个 XML 属性,如果之前的替代方法不起作用:

根据this,将此style="?android:attr/borderlessButtonStyle" 添加到您的XML Button。

如果它不起作用,请告诉我!

【讨论】:

  • 感谢您的快速回复。我忘了提到我需要将 SDK Level 19 作为最低 SDK 版本。我相应地更新了我的问题。不幸的是,“stateListAnimator”属性在那里不可用。如果我使用无边框样式,背景会完全消失。
  • @JDC 我用我将 minSdkversion 设置为 19 后拍摄的图像编辑了我的帖子,它仍然有效。
  • 感谢您的帮助。我使用了stateListAnimator 属性。这行得通。
  • 有人遇到过这个奇怪的错误吗?将 stateListAnimator 设置为 null 会使按钮不可见
【解决方案2】:

在布局 XML 中添加以下属性以移除阴影:

android:elevation="0dp"
android:translationZ="0dp"

这将使您的布局看起来像:

<android.support.v7.widget.AppCompatButton
    android:id="@+id/login_btn_facebook"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:drawableStart="@drawable/ic_btn_login_facebook"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:elevation="0dp"
    android:translationZ="0dp"
    android:text="Continue with Facebook"
    android:textColor="#fff"
    app:backgroundTint="#3b5998"/>

<android.support.v7.widget.AppCompatButton
    android:id="@+id/login_btn_google"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:drawableStart="@drawable/ic_btn_login_google"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:elevation="0dp"
    android:translationZ="0dp"
    android:text="Continue with Google"
    app:backgroundTint="#ffffff" />

阅读here了解更多信息。

【讨论】:

  • 感谢您的快速回复。我忘了提到我需要将 SDK Level 19 作为最低 SDK 版本。我相应地更新了我的问题。不幸的是,那里没有要写的属性..
  • 如果您保留targetSdkVersion 21 或更高版本,它将起作用。
  • 你在 KitKat 手机上得到阴影?
  • 再次您好,很遗憾您的建议不起作用,阴影仍然存在。在 API 级别 23 上测试。据我所知,AppCompatButton 不会传播 elevationtranslationZ 属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 2016-06-28
  • 2015-01-04
相关资源
最近更新 更多