您的位置:首页 > 移动开发 > Android开发

android.support.design库的一些用法

2015-10-22 10:48 555 查看
开始之前做一下准备工作,就是把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的"知道了"按钮之后,就会关闭侧滑菜单.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: