精华内容
下载资源
问答
  • 自定义SnackBar

    千次阅读 2018-07-10 16:52:07
    我浏览material.io网站时,从所谓的“Material Design 2”中找到一些新的组件,并发现Snackbar已经改变了,它不再占用整个屏幕长度,并且周围会有一个间距。 但我并没有从Support Library的alpha版本中找到它,...

    前言

    我浏览material.io网站时,从所谓的“Material Design 2”中找到一些新的组件,并发现Snackbar已经改变了,它不再占用整个屏幕长度,并且周围会有一个间距。

    但我并没有从Support Library的alpha版本中找到它,所以我决定自己实现一下。

    1、创建Drawable文件

    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="#323232" />
        <corners android:radius="4dp" />
    </shape>

    2、创建工具类

    public class SnackbarHelper {
    
        public static void config(Context context, Snackbar snack) {
            addMargins(snack);
            setRoundBordersBg(context, snack);
            ViewCompat.setElevation(snack.getView(), 6f);
        }
    
        private static void addMargins(Snackbar snack) {
            ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) snack.getView().getLayoutParams();
            params.setMargins(12, 12, 12, 12);
            snack.getView().setLayoutParams(params);
        }
    
        private static void setRoundBordersBg(Context context, Snackbar snackbar) {
            snackbar.getView().setBackground(context.getResources().getDrawable(R.drawable.bg_snackbar));
        }
    }

    3、使用

    public void showSnackbar(View view) {
        Snackbar snackbar = Snackbar.make(view, "这个一个snackbar", Snackbar.LENGTH_SHORT);
        snackbar.setAction("ok", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
            }
        });
        snackbar.setActionTextColor(Color.RED);
        SnackbarHelper.config(MainActivity.this, snackbar);
        snackbar.show();
    }

    4、展示

    展开全文
  • 大家都知道这是由floatingactionbutton+snackbar组合实现的,其实网上都会说snackbar和toast一样是一个轻量级的用户交互控件,所以自定义布局没啥意义,那么到底可不可以实现呢?答案是肯定的,而且很easy。 ...

    老规矩,先上图

    大家都知道这是由floatingactionbutton+snackbar组合实现的,其实网上都会说snackbar和toast一样是一个轻量级的用户交互控件,所以自定义布局没啥意义,那么到底可不可以实现呢?答案是肯定的,而且很easy。

    floatbtn = view.findViewById(R.id.item_introduct_fab);
            floatbtn.setOnClickListener(new View.OnClickListener() {
                @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
                @Override
                public void onClick(View v) {
                    initMySnackbar(v);
    
                }
            });

    initMySnackbar()实现如下:

     private void initMySnackbar(View v) {
            //初始化一个snackbar
            Snackbar snackbar = Snackbar.make(v,"",Snackbar.LENGTH_LONG);
            //修改snackbar的背景颜色
            snackbar.getView().setBackgroundColor(getResources().getColor(R.color.gray_100));
            //获取snackbar的源布局
            Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView();
            //隐藏源布局的控件
            TextView textView = (TextView) layout.findViewById(android.support.design.R.id.snackbar_text);
            textView.setVisibility(View.INVISIBLE);
            //获取自定义view
            View snackView = LayoutInflater.from(getContext()).inflate(R.layout.my_snackbar, null);
            ImageView qqshare = snackView.findViewById(R.id.my_snackbar_qqshare);
            qqshare.setOnClickListener(this);
            ImageView zoneshare = snackView.findViewById(R.id.my_snackbar_zoneshare);
            zoneshare.setOnClickListener(this);
            ImageView wechatshare = snackView.findViewById(R.id.my_snackbar_wechatshare);
            wechatshare.setOnClickListener(this);
            ImageView sinashare = snackView.findViewById(R.id.my_snackbar_sinashare);
            sinashare.setOnClickListener(this);
            //添加自定义布局到SnackbarLayout
            layout.addView(snackView, 0);
            //显示snackbar
            snackbar.show();
        }

    Snackbar.SnackbarLayout,它是一个水平LinearLayout对象,其子对象是一个TextView和一个Button。我们只需隐藏的TextView,并将您的视图添加到Snackbar.SnackbarLayout。

    以上就是如何自定义snackbar的所有代码了,如有帮助请点个赞吧!!!

    如有问题,欢迎留言讨论!!!

    展开全文
  • 您可以使用ksnack创建定制的snackbar。ksnack有两种视图类型:ksnack和minimal ksnack。
  • 优雅地使用Snackbar 简单封装

    千次阅读 2017-10-15 11:37:55
    自定义Snackbar的背景颜色 可自定义Snackbar的文字颜色 可自定义Snackbar的显示时长 也可以使用默认的2种时长进行显示(1570ms,2750ms) 可自定义action文字的颜色 可自定义点击事件 可向Snackbar中添加View 效果不...

    优雅地使用Snackbar 简单封装

    优点

    • 简单调用,封装进了一个util类中
    • 可自定义Snackbar的背景颜色
    • 可自定义Snackbar的文字颜色
    • 可自定义Snackbar的显示时长
    • 也可以使用默认的2种时长进行显示(1570ms,2750ms)
    • 可自定义action文字的颜色
    • 可自定义点击事件
    • 可向Snackbar中添加View

    效果

    不说了,老规矩,先上图



    思路

    1. 我首先定义了几种消息类型,然后不同的消息类型定义了不同的颜色,方便区分
    2. 根据时长定义不同的静态方法
    3. 设置背景颜色:先获取到Snackbar的View,然后去设置背景颜色就行
    4. 设置文本颜色:先获取到Snackbar的View,然后findViewById(下面的Snackbar源码中有id),找到View里面的TextView,然后设置它的颜色值即可
    5. 设置action颜色,其实就是设置Snackbar布局中的那个Button的颜色,大家一看下面的Snackbar布局就知道了,我这里不必多说.
    6. 使用注解规范(比如null,消息类型等)

    为了方便大家理解,下面是Snackbar的布局源码(Google)

    <?xml version="1.0" encoding="utf-8"?>
    <!--
      ~ Copyright (C) 2015 The Android Open Source Project
      ~
      ~ Licensed under the Apache License, Version 2.0 (the "License");
      ~ you may not use this file except in compliance with the License.
      ~ You may obtain a copy of the License at
      ~
      ~      http://www.apache.org/licenses/LICENSE-2.0
      ~
      ~ Unless required by applicable law or agreed to in writing, software
      ~ distributed under the License is distributed on an "AS IS" BASIS,
      ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      ~ See the License for the specific language governing permissions and
      ~ limitations under the License.
    -->
    
    <view
        xmlns:android="http://schemas.android.com/apk/res/android"
        class="android.support.design.internal.SnackbarContentLayout"
        android:theme="@style/ThemeOverlay.AppCompat.Dark"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom">
    
        <TextView
            android:id="@+id/snackbar_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:paddingTop="@dimen/design_snackbar_padding_vertical"
            android:paddingBottom="@dimen/design_snackbar_padding_vertical"
            android:paddingLeft="@dimen/design_snackbar_padding_horizontal"
            android:paddingRight="@dimen/design_snackbar_padding_horizontal"
            android:textAppearance="@style/TextAppearance.Design.Snackbar.Message"
            android:maxLines="@integer/design_snackbar_text_max_lines"
            android:layout_gravity="center_vertical|left|start"
            android:ellipsize="end"
            android:textAlignment="viewStart"/>
    
        <Button
            android:id="@+id/snackbar_action"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/design_snackbar_extra_spacing_horizontal"
            android:layout_marginStart="@dimen/design_snackbar_extra_spacing_horizontal"
            android:layout_gravity="center_vertical|right|end"
            android:minWidth="48dp"
            android:visibility="gone"
            android:textColor="?attr/colorAccent"
            style="?attr/borderlessButtonStyle"/>
    
    </view>

    源码

    下面是整个util类的源码,注释写得还是比较详细的,相信大家能看懂

    import android.graphics.Color;
    import android.support.annotation.ColorInt;
    import android.support.annotation.IntDef;
    import android.support.annotation.IntRange;
    import android.support.annotation.LayoutRes;
    import android.support.annotation.NonNull;
    import android.support.annotation.Nullable;
    import android.support.design.widget.Snackbar;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    
    import com.xfhy.androidbasiclibs.R;
    
    /**
     * author feiyang
     * create at 2017/10/12 16:57
     * description:SnakeBar的简单封装,方便使用
     * <p>
     * <p>
     * <p>
     * 源码中:
     * Snackbar snackbar = new Snackbar(findSuitableParent(view));
     * Snackbar的第一个参数:view
     * <p>
     * findSuitableParent(view)方法的主要作用:
     * 1.当传入的View不为空时,如果我们在布局中发现了CoordinatorLayout布局,那么返回的View就是CoordinatorLayout;
     * 2.如果没有CoordinatorLayout布局,我们就先找到一个id为android.R.id.content的FrameLayout(这个布局是最底层的根布局),
     * 将View设置为该FrameLayout;
     * 3.其他情况下就使用View的Parent布局一直到这个View不为空。
     * <p>
     * 这里的颜色配置不能再R.color中配置  Snackbar里面是只能是@ColorInt来设置背景颜色
     */
    public class SnackbarUtil {
    
        /**
         * 信息类型
         */
        public static final int INFO = 1;
        /**
         * 确认信息类型
         */
        public static final int CONFIRM = 2;
        /**
         * 警告类型
         */
        public static final int WARNING = 3;
        /**
         * 错误类型
         */
        public static final int ALERT = 4;
    
        /**
         * 信息类型的背景颜色
         */
        public final static int BLUE = 0xff2195f3;
        /**
         * 确认信息类型背景颜色
         */
        public final static int GREEN = 0xff4caf50;
        /**
         * 警告类型背景颜色
         */
        public final static int ORANGE = 0xffffc107;
        /**
         * 错误类型背景颜色
         */
        public final static int RED = 0xfff44336;
        /**
         * action文本颜色  白色
         */
        public final static int WHITE = 0xffFFFFFF;
    
        /**
         * 消息类型   替代Java中的枚举类型
         */
        @IntDef({INFO, CONFIRM, WARNING, ALERT})
        private @interface MessageType {
        }
    
        /**
         * 显示Snackbar,时长:短时间(1570ms),可自定义颜色
         *
         * @param view            The view to find a parent from.   view不能为空,
         *                        否则会抛出IllegalArgumentException("No suitable parent found from the
         *                        given view.Please provide a valid view.");
         * @param message         需要显示的消息
         * @param messageColor    消息文本颜色
         * @param backgroundColor 背景颜色
         */
        public static void showBarShortTime(@NonNull View view, @NonNull String message, @ColorInt int
                messageColor, @ColorInt int backgroundColor) {
            Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_SHORT);
            setSnackbarColor(snackbar, messageColor, backgroundColor);
    
            snackbar.show();
        }
    
        /**
         * 显示Snackbar,时长:长时间(2750ms),可自定义颜色
         *
         * @param view            The view to find a parent from.
         * @param message         需要显示的消息
         * @param messageColor    消息文本颜色
         * @param backgroundColor 背景颜色
         */
        public static void showBarLongTime(@NonNull View view, @NonNull String message, @ColorInt int
                messageColor, @ColorInt int backgroundColor) {
            Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_LONG);
            setSnackbarColor(snackbar, messageColor, backgroundColor);
            snackbar.show();
        }
    
        /**
         * 自定义时常显示Snackbar,自定义颜色
         *
         * @param view            The view to find a parent from.
         * @param message         需要显示的消息
         * @param duration        显示时长   单位:ms
         * @param messageColor    消息文本颜色
         * @param backgroundColor 背景颜色
         */
        public static void showCustomCATSnackbar(@NonNull View view, @NonNull String message,
                                                 @IntRange(from = 1) int duration,
                                                 @ColorInt int messageColor,
                                                 @ColorInt int backgroundColor) {
            Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_INDEFINITE)
                    .setDuration(duration);
            setSnackbarColor(snackbar, messageColor, backgroundColor);
            snackbar.show();
        }
    
        /**
         * 显示Snackbar,时长:短时间(1570ms),可选预设类型
         * android.support.design.widget.SnackbarManager.SHORT_DURATION_MS
         *
         * @param view    The view to find a parent from.
         * @param message 需要显示的消息
         * @param type    需要显示的消息类型 SnackbarUtil INFO,CONFIRM,WARNING,ALERT
         */
        public static void showBarShortTime(@NonNull View view, @NonNull String message, @MessageType
                int type) {
            Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_SHORT);
            switchType(snackbar, type);
            snackbar.show();
        }
    
        /**
         * 显示Snackbar,时长:短时间(1570ms),可选预设类型
         * android.support.design.widget.SnackbarManager.SHORT_DURATION_MS
         *
         * @param view    The view to find a parent from.
         * @param message 需要显示的消息
         * @param type    需要显示的消息类型 SnackbarUtil INFO,CONFIRM,WARNING,ALERT
         */
        public static void showBarShortTime(@NonNull View view, @NonNull String message, @MessageType
                int type, @Nullable CharSequence text, @NonNull View.OnClickListener listener) {
            Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_SHORT).setAction(text,
                    listener).setActionTextColor(WHITE);
            switchType(snackbar, type);
            snackbar.show();
        }
    
        /**
         * 显示Snackbar,时长:长时间(2750ms),可选预设类型
         * android.support.design.widget.SnackbarManager.LONG_DURATION_MS
         *
         * @param view    The view to find a parent from.
         * @param message 需要显示的消息
         * @param type    需要显示的消息类型 SnackbarUtil INFO,CONFIRM,WARNING,ALERT
         */
        public static void showBarLongTime(@NonNull View view, @NonNull String message, @MessageType
                int type) {
            Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_LONG);
            switchType(snackbar, type);
            snackbar.show();
        }
    
        /**
         * 显示Snackbar,时长:长时间(2750ms),可选预设类型
         * android.support.design.widget.SnackbarManager.LONG_DURATION_MS
         *
         * @param view    The view to find a parent from.
         * @param message 需要显示的消息
         * @param type    需要显示的消息类型 SnackbarUtil INFO,CONFIRM,WARNING,ALERT
         */
        public static void showBarLongTime(@NonNull View view, @NonNull String message, @MessageType
                int type, @Nullable CharSequence text, @NonNull View.OnClickListener listener) {
            Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_LONG).setAction(text,
                    listener).setActionTextColor(WHITE);
            switchType(snackbar, type);
            snackbar.show();
        }
    
        /**
         * 自定义时长 显示Snackbar,可选预设类型
         *
         * @param view     The view to find a parent from.
         * @param message  需要显示的消息
         * @param duration 显示时长   单位:ms
         * @param type     需要显示的消息类型 SnackbarUtil INFO,CONFIRM,WARNING,ALERT
         */
        public static void showCustomTimeSnackbar(@NonNull View view, @NonNull String message,
                                                  @IntRange(from = 1) int duration, @MessageType int
                                                          type) {
            Snackbar snackbar = Snackbar.make(view, message, Snackbar.LENGTH_INDEFINITE)
                    .setDuration(duration);
            switchType(snackbar, type);
            snackbar.show();
        }
    
        /**
         * 设置Snackbar背景颜色
         *
         * @param snackbar        Snackbar
         * @param backgroundColor 背景颜色
         */
        private static void setSnackbarBgColor(Snackbar snackbar, @ColorInt int backgroundColor) {
            View view = snackbar.getView();
            view.setBackgroundColor(backgroundColor);
        }
    
        /**
         * 设置Snackbar文字和背景颜色
         *
         * @param snackbar        Snackbar
         * @param messageColor    文字颜色
         * @param backgroundColor 背景颜色
         */
        private static void setSnackbarColor(Snackbar snackbar, @ColorInt int messageColor,
                                             @ColorInt int backgroundColor) {
            View view = snackbar.getView();  //获取Snackbar自己的布局
            //设置Snackbar自己的布局的背景颜色
            view.setBackgroundColor(backgroundColor);
            //设置Snackbar自己的布局中的TextView的颜色
            ((TextView) view.findViewById(R.id.snackbar_text)).setTextColor(messageColor);
        }
    
        /**
         * 切换预设消息类型
         *
         * @param snackbar Snackbar
         * @param type     消息类型 SnackbarUtil INFO,CONFIRM,WARNING,ALERT
         */
        private static void switchType(Snackbar snackbar, @MessageType int type) {
            switch (type) {
                case INFO:
                    setSnackbarBgColor(snackbar, BLUE);
                    break;
                case CONFIRM:
                    setSnackbarBgColor(snackbar, GREEN);
                    break;
                case WARNING:
                    setSnackbarBgColor(snackbar, ORANGE);
                    break;
                case ALERT:
                    setSnackbarColor(snackbar, Color.YELLOW, RED);
                    break;
            }
        }
    
        /**
         * 向Snackbar中添加view
         *
         * @param snackbar Snackbar
         * @param layoutId 需要添加的布局的id
         * @param index    新加布局在Snackbar中的位置
         */
        public static void SnackbarAddView(Snackbar snackbar, @LayoutRes int layoutId, int index) {
            View snackbarView = snackbar.getView();
            Snackbar.SnackbarLayout snackbarLayout = (Snackbar.SnackbarLayout) snackbarView;
    
            View addView = LayoutInflater.from(snackbarView.getContext()).inflate(layoutId, null);
    
            LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams
                    .WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);
            p.gravity = Gravity.CENTER_VERTICAL;
            snackbarLayout.addView(addView, index, p);
        }
    
    }
    

    总结

    花点时间来封装一下Snackbar还是值得的,项目中很多地方都需要用到,而且还可以更改颜色值,瞬间让你的应用颜值高了许多,是不是?这是我在写一个项目的时候,由于很多地方都需要使用到,然后简单封装一下,方便使用.
    项目地址: https://github.com/xfhy/Daily

    展开全文
  • 最近公司有一个关于snackbar的需求,就是可以自定义snackbar显示在屏幕的位置,在网上搜了很多关于怎么让snackbar显示在距离屏幕底部一定距离的文章,但是基本就是不行。结合了两个其他人的想法,终于搞定了。可以...

    最近公司有一个关于snackbar的需求,就是可以自定义snackbar显示在屏幕的位置,在网上搜了很多关于怎么让snackbar显示在距离屏幕底部一定距离的文章,但是基本就是不行。结合了两个其他人的想法,终于搞定了。可以参照其他人的链接:snackbar 自定义
    snackbar 的bottomMargin
    实现代码:
    一个自定义snackbar 的工具类

    class SnackbarUtil {
        companion object {
            fun showSnackbar(view: View, message: String, bottomMargin: Int, isAddAnchrview: Boolean, isShowAction: Boolean, actionText: String, snackbarActionListener: SnackbarActionListener?) {
                val snackbar = Snackbar.make(view, message, Snackbar.LENGTH_SHORT).addCallback(
                        object : Snackbar.Callback() {
                            override fun onDismissed(transientBottomBar: Snackbar?, event: Int) {
                                super.onDismissed(transientBottomBar, event)
                                snackbarActionListener?.onSnackbarDismissed(event)
                            }
                        }
                )
                val snackbarView = snackbar.view
                if (isAddAnchrview) {
                //这个属性是决定于snackbar显示在哪个控件上
                    snackbar.anchorView = view
                }
                val snackbarLayout = snackbarView as Snackbar.SnackbarLayout
    
                snackbarLayout.setBackgroundColor(Color.TRANSPARENT)
                val textView = snackbarLayout.findViewById<TextView>(com.google.android.material.R.id.snackbar_text)
                textView.visibility = View.INVISIBLE
    
                val customView = LayoutInflater.from(view.context).inflate(R.layout.layout_snackbar_custom_text, LinearLayout(view.context), false) as ViewGroup
                val childLayout = customView.getChildAt(0)
                val params = childLayout.layoutParams as ViewGroup.MarginLayoutParams
                params.setMargins(params.leftMargin, params.topMargin, params.rightMargin, params.bottomMargin + bottomMargin)
                childLayout.layoutParams = params
                customView.findViewById<AppCompatTextView>(R.id.tv_action).apply {
                    if (isShowAction) {
                        text = actionText
                        visibility = View.VISIBLE
                        this.setOnClickListener {
                            snackbarActionListener?.onSnackbarClicked()
                        }
                    } else {
                        visibility = View.GONE
                    }
                }
    
                customView.findViewById<AppCompatTextView>(R.id.tv_snackbar).text = message
                snackbarLayout.addView(customView, 0)
    
                snackbar.show()
    
            }
    
        }
    
        interface SnackbarActionListener {
            fun onSnackbarClicked()
    
            fun onSnackbarDismissed(event: Int)
        }
    }
    
    //自定义layout, 这里需要说明的是必须要有两层布局,否则就会有bug
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bg_snackbar_color"
            android:minHeight="48dp"
            android:orientation="horizontal"
            android:elevation="6dp">
    
            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/tv_snackbar"
                style="@style/Body"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="12dp"
                android:layout_marginEnd="16dp"
                android:layout_marginBottom="12dp"
                android:layout_weight="1"
                android:textColor="@color/white"
                tools:text="Snack bar message goes here, when there are ." />
    
            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/tv_action"
                style="@style/Subhead"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/indigo_400"
                android:layout_marginStart="8dp"
                android:layout_marginEnd="16dp"
                android:layout_gravity="center"
                android:text="Action" />
    
        </LinearLayout>
    
    </LinearLayout>
    

    最后在activity或者fragment实现

      context?.resources?.getDimensionPixelSize(R.dimen.dp_18)?.let {
                        SnackbarUtil.showSnackbar(mView,
                                "Snack bar message goes here, when there are two lines of.", it, isAddAnchrview = true,
                                isShowAction = false, actionText = "", snackbarActionListener = null)
                    }
    
    展开全文
  • SnackBar:间于Toast和dialog之间的控件,是为了弥补吐司和dialog,注意,toast无法与用户交互,dialog虽然...下面我们自定义一个吐司package com.example.acer.tablayouttest;import android.content.Context; impor
  • 它支持通过自定义视图更改Snackbar的颜色,持续时间,消息甚至内容视图。 该库包含以下功能, 小吃店-警报类型 小吃店-设置自定义持续时间 小吃店-自定义contentview Snackbar-绑定视图 小吃店-自定义消息 ...
  • 自定义 Toast,Snackbar,一行代码搞定多重属性设置!
  • Material Design控件之Snackbar,简单使用(相当与底部Toast),setAction设置动作,自定义Snackbar
  • 关键时刻,第一时间送达! ...有时候真的不需要让自己在意太多,在意的太多,反而有些累,...今天我们来学习下有关Toast以及SnackBar用法,通过细节,让我们的app更加人性化~ 本文目标 阅读完本文,你会ge
  • 下面就说说这个Snackbarsnackbar比toast更加灵活,使用起来也和toast一样的简单方便。 Snackbar bar = Snackbar .make (view, "do something" , Snackbar .LENGTH _SHORT) ; Snackbar .SnackbarLayout ...
  • 自定义Snackbar,请将函数传递给具有以下任何属性的JS对象。 所有属性都是可选的。 财产 类型 默认值 笔记 信息 string "Operation performed successfully." 可驳回的 boolean true 暂停 number或
  • LZ-Says:有时候真的不需要让自己在意太多,在意的太多,反而有些累,计较太多,反而让自己患得患失,随心随性就...自定义Toast,了解有关Toast那些不为人知的秘密; SnackBar,通过一个个简短小例子,让你彻底玩转Sna
  • Android顶部、底部标签,自定义Dialog、Snackbar、Toast,悬浮按钮,展示图伸缩效果,发送消息界面效果,登录界面效果等。
  • 关于Toast、Dialog、Snackbar在日常开发中都是经常用到的控件,但在实际使用中,用哪个更好呢,或者假如系统的Dialog不能满足我们的业务要求了,是否可以做一些自定义呢,下面就总结复习下这方面的使用。一、自定义...
  • Android Material Design ————SnackBar使用及初步自定义 Material Design 控件 ——SnackBar
  •  在之前的项目中使用了自定义Snackbar,今天在新项目中使用就出现点击崩溃的问题。查看日志报错堆栈信息。发现java.lang.ClassCastException(类转换异常),怎么会出现这个错误呢? 报错堆栈信息 查找...
  • 上一篇文章讲了TextInputLayout,那么这一篇文章将继续学习Android Design的里面的控件TabLayout和Snackbar。此次的环境也是跟上一文章一样,导入jar这类的不懂的可以先看一下上一篇文章。 。按例先上效果图 ...
  • 最近项目要求实现一个类似于snackbar功能,但是又不完全是snackbar的插件,本来想在Google提供的snackbar里面进行更改,但是这样太麻烦了,于是自己动手实现了一个snackbar。先看下效果图:     1.要解决的...
  • GearLoadingLayout - Android部件可以用作一个进度条、snack bar或其它自定义需求

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 148
精华内容 59
关键字:

自定义snackbar