Android L FAB 按钮阴影

     2023-02-22     250

关键词:

【中文标题】Android L FAB 按钮阴影【英文标题】:Android L FAB Button shadow 【发布时间】:2014-08-20 06:02:55 【问题描述】:

在材料设计指南中,Google 提出了a new style of button,FAB 按钮。我找到了如何制作它的说明,但我无法添加阴影。如何实现?

【问题讨论】:

设置按钮的高度,使用setElevation(float) 是的,我已经做到了,但是我的按钮是一个圆形,而这里的阴影是一个正方形。谢谢你的回答 android.graphics.Outline 和 View.setOutline(Outline) 应该根据 L 文档为您解决问题。 我看到了,但我没有成功使用它……你能给我一个例子吗? 有格式良好的库com.shamanland:fab:0.0.3,它自动支持阴影,查看这个帖子:***.com/a/25098626/1891118 【参考方案1】:

查看“activity.java”,可能有你需要的代码。

我制作了这样的 Fab - Button:

layout.xml

    <Button
    style="?android:attr/buttonStyleSmall"
    android:layout_
    android:layout_
    android:text="+"
    android:textSize="40sp"
    android:background="@drawable/ripple"
    android:id="@+id/fabbutton"
    android:layout_margin="@dimen/activity_horizontal_margin"
    android:elevation="3dp"
    android:paddingBottom="16dp"
    android:fontFamily="sans-serif-light"
    android:layout_alignParentEnd="true"
    android:layout_gravity="right|bottom" />

ripple.xml

<?xml version="1.0" encoding="utf-8"?>
 <ripple android:color="#ffb300" xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@drawable/fab"></item>
</ripple>

fab.xml

<?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
  <solid android:color="@color/accentColor" />
</shape>

Activity.java

    import android.graphics.Outline;
    ...
    Button fab = (Button) rootView.findViewById(R.id.fabbutton);

    Outline mOutlineCircle;
    int shapeSize = getResources().getDimensionPixelSize(R.dimen.shape_size);
    mOutlineCircle = new Outline();
    mOutlineCircle.setRoundRect(0, 0, shapeSize, shapeSize, shapeSize / 2);

    fab.setOutline(mOutlineCircle);
    fab.setClipToOutline(true);

此代码在android studio v0.8.1 中将显示为错误,其他android l 组件也是如此。下个版本会修复。

结果:

【讨论】:

这是我搜索的!! OutlineHelper 是什么? 非常感谢,只需将 112 放入 R.dimen.shape_size android:elevation ? @VishalVijay 这用于按钮获得小阴影。如果设置得更高,阴影会更宽。 @theyanu android:elevation 仅在 android L 中可用?【参考方案2】:

您可以使用按钮:

<ImageButton
        android:id="@+id/fab"
        android:background="@drawable/ripple"
        android:stateListAnimator="@anim/anim"
        android:src="@drawable/ic_action_add"
        android:elevation="4dp"
        />

ic_action_add 是您的图标。

drawable/ripple.xml 是:

<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight">
    <item>
        <shape android:shape="oval">
            <solid android:color="?android:colorAccent" />
        </shape>
    </item>
</ripple>

anim/anim.xml 是:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_enabled="true"
        android:state_pressed="true">
        <objectAnimator
            android:duration="@android:integer/config_shortAnimTime"
            android:propertyName="translationZ"
            android:valueFrom="@dimen/button_elevation"
            android:valueTo="@dimen/button_press_elevation"
            android:valueType="floatType" />
    </item>
    <item>
        <objectAnimator
            android:duration="@android:integer/config_shortAnimTime"
            android:propertyName="translationZ"
            android:valueFrom="@dimen/button_press_elevation"
            android:valueTo="@dimen/button_elevation"
            android:valueType="floatType" />
    </item>
</selector>

Dimens.xml

<resources>
    <dimen name="fab_size">56dp</dimen>

    <dimen name="button_elevation">2dp</dimen>
    <dimen name="button_press_elevation">4dp</dimen>
</resources>

使用 elevation 属性,您应该通过代码设置 Outline

public class MainActivity extends Activity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layoutfab);

        //Outline            
        Button fab = (Button) findViewById(R.id.fab)

        ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() 
          @Override
              public void getOutline(View view, Outline outline) 
                 // Or read size directly from the view's width/height
                 int size = getResources().getDimensionPixelSize(R.dimen.fab_size);
                 outline.setOval(0, 0, size, size);
              
        ;
        fab.setOutlineProvider(viewOutlineProvider);
            

【讨论】:

你知道有没有标准的android plus图标可以使用吗?我试图在 android drawables 中找到 'ic_action_add' 但什么也没找到。 @Gabriele Mariotti 很好的答案!正如您在***.com/a/26497783/937715 中提到的那样,只需 ping 即可让您知道此处的 .setOutline() 应替换为 .setOutlineProvider()。 @TheHungryAndroider 你找到了吗? @GabrieleMariotti 您忘记在 Activity 中将按钮更改为 ImageButton【参考方案3】:

使用Outline可以轻松解决圆形阴影的问题,无需任何技巧:只需将这些属性添加到XML布局中的按钮(除了自定义背景):

android:elevation="5dp"
android:stateListAnimator="@null"

虽然 Android Studio 可能在布局预览中显示错误,但在设备上启动时可以正常工作。

【讨论】:

Android L - 浮动操作按钮 (FAB)

】AndroidL-浮动操作按钮(FAB)【英文标题】:AndroidL-FloatingActionButton(FAB)【发布时间】:2014-08-1812:24:00【问题描述】:Google是否已经为这个新的圆形FAB按钮发布了定义的样式或组件,还是我应该自己实现设计?这里描述了按钮:Google... 查看详情

android支持设计库提供的FAB如何添加阴影?

】android支持设计库提供的FAB如何添加阴影?【英文标题】:HowtoaddshadowtotheFABprovidedwiththeandroidsupportdesignlibrary?【发布时间】:2015-08-1212:20:09【问题描述】:标题很自我解释。以下代码不会在浮动操作按钮下方呈现阴影。可以做些... 查看详情

android:从代码动态更改FAB(浮动操作按钮)图标

】android:从代码动态更改FAB(浮动操作按钮)图标【英文标题】:android:dynamicallychangeFAB(FloatingActionButton)iconfromcode【发布时间】:2016-01-1310:46:48【问题描述】:如何在运行时更改Activity中的FAB图标。我有这个代码->FloatingActionBut... 查看详情

Eclipse 中所有 API 级别的 Android 5.0 FAB 按钮

】Eclipse中所有API级别的Android5.0FAB按钮【英文标题】:Android5.0FABButtonforallAPIlevelsinEclipse【发布时间】:2015-05-1210:15:39【问题描述】:有没有办法在Eclipse的旧API中使用FAB按钮?我只能为AndroidStudio找到东西。或者是否可以在Eclipse中... 查看详情

如何在 android 上更改浮动操作按钮 (FAB) 的形状?

】如何在android上更改浮动操作按钮(FAB)的形状?【英文标题】:HowtochangetheshapeofFloatingActionButton(FAB)onandroid?【发布时间】:2018-08-2123:35:59【问题描述】:在我们的android应用程序中,我们需要创建一个浮动操作按钮,它不是默认的... 查看详情

未聚焦时Android隐藏FAB菜单

】未聚焦时Android隐藏FAB菜单【英文标题】:AndroidHideFABmenuwhenunfocused【发布时间】:2016-07-2717:46:50【问题描述】:我有一个浮动操作按钮,其中包含一个自定义的迷你浮动操作按钮菜单,单击主浮动操作按钮时会出现该菜单。迷... 查看详情

FAB 按钮未在 android studio 布局编辑器中正确显示可绘制对象

】FAB按钮未在androidstudio布局编辑器中正确显示可绘制对象【英文标题】:FABbuttonnotshowingdrawableproperlyinsideandroidstudiolayouteditor【发布时间】:2021-03-2420:37:35【问题描述】:我似乎无法让FAB按钮预览正常工作。<com.google.android.materi... 查看详情

更改按钮我的fab位置(代码片段)

...置默认按钮,例如浮动操作按钮?这是miXML<fragmentxmlns:android="http://schemas.android.com/apk/res/android"xmlns:map="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/map"android:name="com.google.android.gms.maps.SupportMapFrag... 查看详情

如何在 Android 的浮动操作按钮 FAB 中保留可绘制的默认颜色

】如何在Android的浮动操作按钮FAB中保留可绘制的默认颜色【英文标题】:HowtopreservedrawabledefaultcolorinaFloatingActionButtonFABinAndroid【发布时间】:2021-12-2903:42:44【问题描述】:我正在尝试找到一种方法,使app:tint值不会影响放置在晶... 查看详情

Android FAB 转换为菜单

】AndroidFAB转换为菜单【英文标题】:AndroidFABtransformtomenu【发布时间】:2020-09-0208:53:20【问题描述】:根据更新的材料指南,浮动操作按钮可以转换为如下所示的菜单:有人可以帮助我提供一些代码或一些关于如何实现此行为的... 查看详情

如何删除按钮阴影(android)

】如何删除按钮阴影(android)【英文标题】:Howtoremovebuttonshadow(android)【发布时间】:2015-04-2915:09:46【问题描述】:我想去掉按钮的阴影,让它看起来更平坦。我现在有这个:但我想要这个:【问题讨论】:我在这里写评论,这... 查看详情

底页和 FAB 边距

...margin【发布时间】:2017-08-1408:25:42【问题描述】:如何在android的底部工作表和浮动操作按钮之间添加边距。我通过使用另一个FAB并使其不可见来使其工作,但FAB仅位于底部表上方。看这张图:1还有代码:<android.support.design.widg... 查看详情

Android海拔没有在按钮上显示阴影

】Android海拔没有在按钮上显示阴影【英文标题】:AndroidelevationnotshowingshadowonButton【发布时间】:2016-11-1116:52:01【问题描述】:无法显示按钮阴影。将我的代码精简为最小示例:activity_main.xml<?xmlversion="1.0"encoding="utf-8"?><Scro... 查看详情

在 android studio 中构建 XML 按钮

】在androidstudio中构建XML按钮【英文标题】:buildXMLbuttoninandroidstudio【发布时间】:2020-05-1720:53:53【问题描述】:如何构建一个像这样的FAB按钮来使用XML在androidstudio中展开视图?thisisthebuttonIneedtobuild【问题讨论】:【参考方案1】... 查看详情

android——点击按钮的阴影动画

参考技术A使用translationZ的属性使按钮在z轴方向上移,并且设置上移的时间,产生悬浮动画的效果。再次使用translationZ设置按钮在z轴方向下移,回到原位。效果: 查看详情

android drawable上不存在Android FAB加号

】androiddrawable上不存在AndroidFAB加号【英文标题】:AndroidFABplussignnotpresentonandroiddrawable【发布时间】:2016-07-2114:23:36【问题描述】:在哪里可以找到浮动操作按钮中心的加号?是安卓做的还是我自己做的?【问题讨论】:【参考... 查看详情

如何在android材料设计风格中创建按钮阴影

】如何在android材料设计风格中创建按钮阴影【英文标题】:Howtocreatebuttonshadowinandroidmaterialdesignstyle【发布时间】:2014-08-1800:08:53【问题描述】:新的材料设计指南引入了高架按钮,这些按钮可以投射出漂亮的阴影。根据预览版SD... 查看详情

设置 FAB 图标颜色

...015-09-1519:21:25【问题描述】:当前FAB我想知道如何将“com.android.support:design:22.2.0”库提供的FAB(浮动操作按钮)小部件的图标颜色从绿色更改为白色。style.xml<resources><stylename="AppTheme"parent="Theme.AppCompat.Lig 查看详情