云顶娱乐手机官网-云顶娱乐网址

热门关键词: 云顶娱乐手机官网,云顶娱乐网址

ToolBar使用笔记

2019-09-25 作者:编辑程序   |   浏览(100)

1.导入AppBarLayout组件(点击下载按键,安装组件)

  • 参考
    Android开辟:最详细的 Toolbar 开垦推行总计
    ToolBar-Android Developers

云顶娱乐网址 1

一. 施用手续

  1. build.gradle加入
compile 'com.android.support:appcompat-v7:25.2.0(版本号以最新为准)'
  1. 隐身旧的ActionBar
  • 方法一:在Activity的onCreate方法设置
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);//Activity继承自AppCompatActivity
或requesWindowFeature(Window.FEATURE_NO_TITLE);//Activity继承自Activity
  • 方法二:
    概念主旨样式
<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
</style>

抑或接续自未有ActionBar的大旨

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">    
</style>
  1. xml使用布局(设置各样品质)
  • 标题居中
![](https://upload-images.jianshu.io/upload_images/4544491-50608318945de4e7.png)

标题居中效果
<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:theme="@style/toolbar_theme">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="设置"
            android:layout_gravity="center"
            android:textSize="20sp"
            android:textColor="@android:color/white"/>

    </android.support.v7.widget.Toolbar>

<!--定义toolbar返回按钮的颜色-->
    <style name="toolbar_theme" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        <item name="colorControlNormal">@android:color/white</item>
    </style>
  • 标题暗许
![](https://upload-images.jianshu.io/upload_images/4544491-fe9eb30162f81fcd.png)

标题默认效果
<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:background="@color/colorPrimary"
        app:title="@string/app_name"
        app:titleTextColor="@android:color/white">
</android.support.v7.widget.Toolbar>
  1. 给ToolBar添加Action Menu
  • 新建menu文件
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/action_search"
        android:title="Search"
        android:icon="@drawable/icon_search_16"
        app:showAsAction="ifRoom"/>

    <item
        android:id="@+id/action_settings"
        android:title="Settings"
        android:icon="@android:drawable/ic_menu_manage"
        app:showAsAction="never"/>
</menu>
  • 给ToolBar增多Menu(二种办法)
    1.Activity中不进行setSupportActionBar(),直接伊始化ToolBar
    并应用inflateMenu方法增多Menu到ToolBar
toolbar.inflateMenu(R.menu.menu_toobar);//加载菜单
/*菜单点击事件*/
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()){
                    case R.id.action_search:
                        Toast.makeText(MainActivity.this,"Search",Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.action_settings:
                        Toast.makeText(MainActivity.this,"Settings",Toast.LENGTH_SHORT).show();
                        break;
                }
                return true;
            }
        });

2.Activity中进行setSupportActionBar()云顶娱乐网址,,然后调用onCreateOptionsMenu()张开菜单伊始化,增加Menu到ToolBar

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_toobar,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.action_search:
                Toast.makeText(MainActivity.this,"Search",Toast.LENGTH_SHORT).show();
                break;
            case R.id.action_settings:
        Toast.makeText(MainActivity.this,"Settings",Toast.LENGTH_SHORT).show();
                break;
        }
        return super.onOptionsItemSelected(item);
    }

PS:方法二其实是将ToolBar当成是ActionBar来选择

  1. Activity中援引ToolBar并拓宽setXXX操作和监听操作(设置menu等,其实这个操作都能够用xml设置)
  2. 回到上级的落到实处(重临上级便是将方今Activity给finish掉)
    6.1 方法一:利用自定义的回来Logo(ToolBar直接利用,未设置为supportActionBar)
  • 安装ToolBar的navigationIcon(能够在xml也足以在activity)
  • 设置navigationIcon的点击事件
toolbar.setNavigationIcon(R.drawable.icon_menu_16);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

6.2 方法二:运用系统自带的回来按键(ToolBar设置为supportActionBar,这种艺术中开关颜色为土褐,自定义颜色的话供给用style来决定,style下面xml这里写过)

  • 设置格局
        /*返回上级实现*/
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);//显示返回上级的箭头
        //getSupportActionBar().setDisplayShowTitleEnabled(false);//将actionbar原有的标题去掉(这句一般是用在xml方法一实现)
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

2.选中AppBarLayout 右击Add to Design,依照下图勾选,点击Ok就可以。

二. ToolBar的XML属性介绍

  • app:layout_scrollFlags属性(法定文书档案):用来安装滑动分界面包车型地铁时候ToolBar做出的影响,取值如下:
scroll//上滑的时候就会隐藏ToolBar
enterAlways//下拉的时候会马上显示ToolBar
snap//当ToolBar显示出一部分的时候自动确定是显示还是隐藏
enterAlwaysCollapsed//当向下滑动到ToolBar的minHeight的时候显示ToolBar
enterUntilCollapsed//

云顶娱乐网址 2

三. 与AppBarLayout搭配使用

3.组件树结构

四. 让抱有想要完成再次回到开关的Activity完毕重回效率的措施

  • 封装XaseActivity,在BaseActivity中完成重回效能,供给贯彻该意义的Activity承接BaseActivity就可以
  • 自定义ToolBar,设置重回按键和点击事件,点击后finish当前Activity

云顶娱乐网址 3

有上海体育场所可知,AppBarLayout组件集成了TabLayout和ToolBar组件

4.在ToolBar组件中手动增添ImageView 组件

<android.support.v7.widget.Toolbar            android:layout_height="?attr/actionBarSize"            android:layout_width="match_parent"            app:layout_scrollFlags="scroll|enterAlways">            <ImageView                android:src="@mipmap/ic_launcher"                android:layout_width="match_parent"                android:layout_height="wrap_content" />        </android.support.v7.widget.Toolbar>

5.贯彻多图滚动显示效果(利用NestedScollView组件)

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <android.support.v4.widget.NestedScrollView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:fillViewport="true">        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="vertical" >            <ImageView                android:id="@+id/imageView"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:scaleType="fitXY"                app:srcCompat="@mipmap/img4" />            <ImageView                android:id="@+id/imageView2"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:scaleType="fitXY"                app:srcCompat="@mipmap/img1" />            <ImageView                android:id="@+id/imageView3"                android:scaleType="fitXY"                android:layout_width="match_parent"                android:layout_height="match_parent"                app:srcCompat="@mipmap/img3" />            <ImageView                android:id="@+id/imageView4"                android:scaleType="fitXY"                android:layout_width="match_parent"                android:layout_height="match_parent"                app:srcCompat="@mipmap/img2" />        </LinearLayout>    </android.support.v4.widget.NestedScrollView></LinearLayout>

6.整体的xml文件

<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.design.widget.AppBarLayout        android:id="@+id/appbar"        android:layout_height="wrap_content"        android:layout_width="match_parent">        <android.support.v7.widget.Toolbar            android:gravity="center"            android:layout_height="?attr/actionBarSize"            android:layout_width="match_parent"            app:layout_scrollFlags="scroll|enterAlways">            <ImageView                android:src="@mipmap/ic_launcher"                android:layout_width="match_parent"                android:layout_height="wrap_content" />        </android.support.v7.widget.Toolbar>        <android.support.design.widget.TabLayout            android:id="@+id/tabs"            android:layout_width="match_parent"            android:layout_height="wrap_content"            app:layout_scrollFlags="scroll|enterAlways"            app:tabMode="scrollable">            <android.support.design.widget.TabItem                android:layout_height="wrap_content"                android:layout_width="wrap_content"                android:text="Tab1" />            <android.support.design.widget.TabItem                android:layout_height="wrap_content"                android:layout_width="wrap_content"                android:text="Tab2" />            <android.support.design.widget.TabItem                android:layout_height="wrap_content"                android:layout_width="wrap_content"                android:text="Tab3" />        </android.support.design.widget.TabLayout>    </android.support.design.widget.AppBarLayout>    <android.support.v4.widget.NestedScrollView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:fillViewport="true"        app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior">        <android.support.v4.view.ViewPager            android:id="@+id/viewpage1"            android:layout_width="match_parent"            android:layout_height="wrap_content" />    </android.support.v4.widget.NestedScrollView>    <android.support.design.widget.FloatingActionButton        android:layout_height="wrap_content"        android:layout_width="wrap_content"        android:src="@android:drawable/ic_input_add"        android:layout_gravity="bottom|end"        android:layout_margin="16dp"        android:clickable="true" /></android.support.design.widget.CoordinatorLayout>

注意:

若不能够冒出滑动页面,则应当在NestedScrollView组件xml设置他的品质

android:fillViewport="true"

7.java后台代码

import android.support.annotation.Nullable;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    TabLayout tabLayout;    ViewPager viewPager;    List<Fragment> fragments; //定义一个列表集合    String[] table={"新闻","财经","娱乐"};  //定义一个数组存放标题内容    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tabLayout=findViewById(R.id.tabs);        viewPager=findViewById(R.id.viewpage1);        fragments=new ArrayList<>();  //实例化集合        fragments.add(new MyFragment1;        fragments.add(new MyFragment2;        fragments.add(new MyFragment3;        Adapter adapter=new Adapter(getSupportFragmentManager(),fragments);//参数1为fragment管理器        viewPager.setAdapter;//给viewPager设置适配器        tabLayout.setupWithViewPager(viewPager);//将tabLayout与viewPager建立匹配    }    //创建一个内部类作为适配器    public class Adapter extends FragmentPagerAdapter {        private List<Fragment> list;        public Adapter(FragmentManager fm,List<Fragment> list) {            super;            this.list=list;        }        @Override        public Fragment getItem(int position) {            return list.get;        }        @Override        public int getCount() {            return list.size();        }        @Nullable        @Override        public CharSequence getPageTitle(int position) {            return table[position];        }    }}

本文由云顶娱乐手机官网发布于编辑程序,转载请注明出处:ToolBar使用笔记

关键词: