android.support.design库的一些用法

来源:互联网 发布:域名注册商处修改dns 编辑:程序博客网 时间:2024/06/05 07:59

开始之前做一下准备工作,就是把sdk manager里的android support library升级到最新,我目前最新的版本为23.0.1,看看sdk目录里有没有这个文件夹:如下图:


有的话,说明下载时ok的,然后在app的build.gradle的dependencies节点下配置如下一行代码,即可把design支持包添加到项目中,如下图:


ok,准备工作做好之后,就可以使用该支持包里的相关组件了.


1,Snackbar

和Toast类似:Toast不能响应任何事件,但是可以控制显示的位置.

Snackbar不能控制显示的位置,它只能显示在屏幕的底部,但是却可以响应点击事件,界面比Toast好看多了,并且控制它的界面也较为简单,

Snackbar的显示方式和Toast类似,都是利用makeText().show()来显示,若要让Snackbar响应点击事件,必须设置一个action,这是与Toast不同的地方,还有一个地方不同,那就是:makeText()的第一个参数不同,Toast的第一个参数为上下文,而Snackbar的第一个参数为View类型的参数,这个参数应该为触发Snackbar显示的view.

Snackbar还有一些自己的独有方法:如下:

(1),setAction(java.lang.CharSequence text,  @Nullable android.view.View.OnClickListener listener):用来响应点击事件

(2)isShown():   Snackbar是否正在显示

(3)setActionTextColor(android.content.res.ColorStateList colors):用来设置setAction()方法中第一个参数的颜色

(4)setText():用来设置Snackbar的提示文本,若设置这个属性,则会覆盖Snackbar.makeText()第二个参数的内容

(5)setDuration();用来设置Snackbar显示的时长,若设置该属性,则会覆盖Snackbar.makeText()第三个参数的内容

(6)setCallback():用来设置Snackbar的回调函数,有两个方法需要重写第一个为:onShown()当Snackbar正在显示时调用,第二个为onDismissed()当Snackbar消失时调用

下面为具体的代码:

public void click(View view) {        //View inflate = LayoutInflater.from(MainActivity.this).inflate(R.layout.view_layout, null);        //自己写一个布局加载进去无效,会报空指针,所以第一个参数View应该为触发Snackbar显示的View,这里为button        Snackbar.make(view, "你点击了按钮", Snackbar.LENGTH_LONG).setAction("知道了", new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(getApplicationContext(), "点击消失", Toast.LENGTH_SHORT).show();            }        }).setActionTextColor(Color.YELLOW).setCallback(new Snackbar.Callback() {            //当Snackbar正在显示时调用            @Override            public void onShown(Snackbar snackbar) {                super.onShown(snackbar);                //snackbar.setActionTextColor(Color.RED);            }            //当Snackbar消失时调用,这个消失包括手动点击消失和时间到了自动消失            @Override            public void onDismissed(Snackbar snackbar, int event) {                super.onDismissed(snackbar, event);                Toast.makeText(getApplicationContext(), "已经消失了", Toast.LENGTH_SHORT).show();            }        }).show();    }

2,android.support.design.widget.NavigationView 基本用法

这个类主要和android.support.v4.widget.DrawerLayout一起搭配使用,实现侧滑菜单效果,直接上代码吧,这样最直观.

<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"    >    <android.support.v4.widget.DrawerLayout        android:id="@+id/drawer"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:fitsSystemWindows="true">        <!-- 主内容布局-->        <include layout="@layout/test_layout"/>        <!--侧滑菜单        app:headerLayout="@layout/test1" 用于添加侧滑菜单头部布局            app:menu="@menu/menu_main"  用于添加侧滑菜单的菜单选项            这两个属性是最核心的属性-->        <android.support.design.widget.NavigationView            android:id="@+id/navigation"            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_gravity="start"            app:headerLayout="@layout/test1"            app:menu="@menu/menu_main"/>    </android.support.v4.widget.DrawerLayout></LinearLayout>

同时可以在android.support.design.widget.NavigationView控件里控制android:layout_width="",进而来控制侧滑菜单的宽度,这样简单的几个布局文件就实现了侧滑菜单效果,来张效果图吧:


若要对侧滑菜单里的相关项进行控制怎么做呢,首先头布局很简单,因为头布局加载的是layout,所以监听事件直接找到相关的控件,然后设置监听即可,

那么怎么控制下方的每条item的监听事件呢,官方早就帮我们想好了,还是直接上代码吧:如下:

package com.example.administrator.designlibrarydemo;import android.os.Bundle;import android.support.design.widget.NavigationView;import android.support.design.widget.Snackbar;import android.support.v4.widget.DrawerLayout;import android.support.v7.app.AppCompatActivity;import android.view.MenuItem;import android.view.View;public class MainActivity extends AppCompatActivity {    private NavigationView navigation;    private DrawerLayout drawer;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        drawer = (DrawerLayout) findViewById(R.id.drawer);        navigation = (NavigationView) findViewById(R.id.navigation);        navigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {            @Override            public boolean onNavigationItemSelected(MenuItem menuItem) {                Snackbar.make(navigation, "你点击了" + menuItem.getTitle(), Snackbar.LENGTH_LONG).setAction("知道了", new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        drawer.closeDrawers();//关闭侧滑菜单                    }                }).show();                return false;            }        });    }}

利用navigation.setNavigationItemSelectedListener()即可对item设置监听,上个效果图:


上面Snackbar的点击功能为:当点击Snackbar的"知道了"按钮之后,就会关闭侧滑菜单.



1 0
原创粉丝点击