精华内容
参与话题
问答
  • ToolBar

    2018-11-04 20:37:03
    android.support.v7.widget.Toolbar android:id="@+id/tb" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#1a2...

    action_main

    <android.support.v7.widget.Toolbar
            android:id="@+id/tb"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#1a26cc">
            <!--这是一个容器-->
        </android.support.v7.widget.Toolbar>
    

    MainActivity

    package wanghuiqi.bawie.com.drag_balls;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Toast;

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Toolbar toolbar = findViewById(R.id.tb);
            toolbar.setTitle("标题");
            setSupportActionBar(toolbar);
            toolbar.setLogo(R.mipmap.ic_launcher);
            toolbar.setNavigationIcon(R.mipmap.ic_launcher);
            toolbar.setSubtitle("小标题");
    
            //往它里面填充布局
            toolbar.inflateMenu(R.menu.menu);
    
            toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem menuItem) {
                    /*switch (menuItem.getItemId()){
                        case R.id.item0:*/
                            Toast.makeText(MainActivity.this, "hah", Toast.LENGTH_SHORT).show();
                            //break;
                    //}
                    return true;
                }
            });
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu,menu);
            return true;
        }
    }
    

    Menu

    文件夹下的menu.xml

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <item android:id="@+id/item0"
            app:showAsAction="never"
            android:title="item0"
            android:icon="@mipmap/ic_launcher"/>
    
        <item android:id="@+id/item1"
            app:showAsAction="never"
            android:title="item0"
            android:icon="@mipmap/ic_launcher"/>
    
        <item android:id="@+id/item2"
            app:showAsAction="always"
            android:title="item0"
            android:icon="@mipmap/ic_launcher"/> 
    </menu>
    

    styles.xml

    改成隐藏

       Theme.AppCompat.Light.NoActionBar
    
    展开全文
  • toolbar

    2019-11-03 00:50:19
    https://www.jianshu.com/p/05ef48b777cc

    https://www.jianshu.com/p/05ef48b777cc

    展开全文
  • Toolbar

    2017-06-18 17:22:48
    Toolbar 的解释Toolbar 是 android 5.0 引入的一个新控件,可以理解为是 ActionBar 的升级版,大大扩展了 Actionbar,使用更灵活,不像 actionbar 那么固定,Toolbar 更像是一般的View元素,可以被放置在 view 树...

    Toolbar 的解释

    Toolbar 是 android 5.0 引入的一个新控件,可以理解为是 ActionBar 的升级版,大大扩展了 Actionbar,使用更灵活,不像 actionbar 那么固定,Toolbar 更像是一般的View元素,可以被放置在 view 树体系的任意位置,可以应用动画,可以跟着 scrollView 滚动,可以与布局中的其他 view 交互。

    Toolbar 的基本属性

    1. xml style属性:

    colorPrimaryDark:状态栏的颜色(可用来实现沉浸效果)。

    colorPrimary: Toolbar 的背景颜色 (xml中用android:background=”?attr/colorPrimary”指定)。

    android:textColorPrimary:Toolbar中文字的颜色,设置后Menu Item 的字体颜色也会跟随。

    colorAccent:EditText 正在输入时,RadioButton 选中时的颜色。

    2. xml 属性:

    app:title=”App Title”:Toolbar 中的 App Title。

    app:subtitle=”Sub Title” :Toobar 中的小标题。

    app:navigationIcon=”?attr/homeAsUpIndicator” : 导航图标,比如返回图标(与 Logo 不同)。

    Toolbar 的简单使用

    1. 首先在布局 layout 文件中写入引用代码。

        <android.support.v7.widget.Toolbar
            android:id="@+id/home_toolbar_main"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:minHeight="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay"
            app:navigationIcon="?attr/homeAsUpIndicator"
        </android.support.v7.widget.Toolbar>

    2. 然后在 Activity 中声明定义该控件,注意 Activity 必须是继承于 AppCompatActivity。

       toolbar=(Toolbar)findViewById(R.id.home_toolbar_main);

    3. 声明定义之后还需要配置一下,设置 toolbar。

        setSupportActionBar(toolbar);

    4. 添加标题。

        setTitle("首页");

    5. 最后只要设置 Application 的 Style —— AppTheme 和 Activity 的 Style —— AppTheme.NoActionBar 就可以了,因为已经有了 Toolbar 了,替代了 ActionBar,所以在 Activity 的 Theme 中需要设置为 windowActionBar 为 false。

        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimary</item>
            <item name="colorAccent">@color/colorAccent</item>
        </style>
    
        <!-- activity theme. -->
        <style name="AppTheme.NoActionBar">
            <item name="windowActionBar">false</item>
            <item name="windowNoTitle">true</item>
        </style>
    
    展开全文
  • 使用Toolbar会变成全屏,明明高度已经设置成?attr/actionBarSize了 顺便求大佬告诉下toolbar的图标都是怎么弄得啊 例如导航栏 后退键 android:layout_height="match_parent" xmlns:android=...
  • 对话框头文件中定义:CToolBar m_toolbar; 对话框源文件OnInitDialog()函数中: if (!m_toolbar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY ...
  • Material Design之Toolbar与Palette实践 源码

    千次下载 热门讨论 2014-11-24 08:52:39
    Material Design之Toolbar与Palette实践,资源对应博客:http://blog.csdn.net/bbld_/article/details/41439715
  • Toolbar的详细介绍和自定义Toolbar

    万次阅读 多人点赞 2018-03-14 17:26:12
    在此总结一下,Android Toolbar 控件的使用方法,争取总结的系统全面些。之前也只是停留在一些基本简单的用法,而且也不系统。希望爱学习的你能通过这篇文章,有所收获! Toolbar 的基本用法 常用的方法 xml...

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布

    在此总结一下,Android Toolbar 控件的使用方法,争取总结的系统全面些。之前也只是停留在一些基本简单的用法,而且也不系统。希望爱学习的你能通过这篇文章,有所收获!

    Toolbar 的基本用法

    常用的方法

    xml中的设置:

    <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorAccent"
            app:navigationIcon="@drawable/ic_back_white_24dp"
            app:title="标题"
            app:titleTextColor="@color/white">
     </android.support.v7.widget.Toolbar>

    如果你不在xml中设置参数的话,代码中的设置:

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            toolbar.setTitle("标题");
            toolbar.setTitleTextColor(Color.WHITE);
            toolbar.setNavigationIcon(R.drawable.ic_back_white_24dp);
    
            //点击左边返回按钮监听事件
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                }
            });
    

    由于比较简单,效果图这里也不在贴出啦。

    全面但包括不太常用的用法

    xml中的配置:

    <!--   navigationIcon  左边返回箭头图标
           navigationContentDescription 目前还不知道其作用
           titleMarginStart  标题距离(开始)左边的距离
           -->
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorAccent"
            app:logo="@mipmap/ic_launcher"
            app:navigationContentDescription=""
            app:navigationIcon="@drawable/ic_back_white_24dp"
            app:subtitle="子标题"
            app:subtitleTextColor="@color/white"
            app:title="标题"
            app:titleMarginStart="90dp"
            app:titleTextColor="@color/white">
    

    同样如果不在xml中设置参数的话,代码中的设置:
    这里就不在贴出代码啦,设置的时候,先敲打出xml配置中的关键单词或首字母,就会自动提示的。大部分在xml有的属性,代码中都可以设置

    效果图:
    这里写图片描述

    注意事项:
    1:如果你添加了这行代码 setSupportActionBar(toolbar); 那么 toolbar.setNavigationOnClickListener监听方法,要放到其后面,否则点击事件,监听不到的。如果你用不到ActionBar的一些特性的话,建议setSupportActionBar(toolbar); 这行代码不用添加了。

    如果你想修改主标题和子标题的文字大小,你可通过如下方式:
    首先定义一个style:

     <!--主标题-->
    <style name="ToolbarTitle" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
           <item name="android:textColor">#f0f0</item>
            <item name="android:textSize">15sp</item>
        </style>
    
     <!--子标题-->
    <style name="ToolbarSubtitle" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle">
            <item name="android:textColor">#f0f0</item>
            <item name="android:textSize">10sp</item>
        </style>

    然后:

     <!-- app:titleTextAppearance="@style/ToolbarTitle"-->
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorAccent"
            app:logo="@mipmap/ic_launcher"
            app:navigationContentDescription=""
            app:navigationIcon="@drawable/ic_back_white_24dp"
            app:subtitle="子标题"
            app:subtitleTextColor="@color/white"
            app:title="标题"
            app:titleMarginStart="90dp"
            app:titleTextAppearance="@style/ToolbarTitle"
            app:titleTextColor="@color/white">

    效果图这里不在贴出了,通过app:titleTextAppearance=”@style/ToolbarTitle”方法的设置,就能修改标题字体的大小,当然文字颜色也可以修改。

    到这里,你可能要问了,如果,我想要标题居中,怎么办呢?查看api,toolbar没有使其居中的方法,也就提供了使其距左右,上下边距大小的方法。不过不用担心,这里还是有办法的。看如下代码:

     <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorAccent">
    
            <TextView
                android:id="@+id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="标题"
                android:textColor="@color/white"
                android:textSize="22sp" />
    
        </android.support.v7.widget.Toolbar>

    效果图:
    这里写图片描述

    注意: 此时 TextView 控件的宽和高都是自适应大小,java 代码中此行代码setSupportActionBar(toolbar);就不要添加了,否则就会显示不正常。如果你非要添加setSupportActionBar(toolbar);这行代码的话,TextView 控件的宽要用match_parent属性。这里再次建议setSupportActionBar(toolbar);这行代码就不要点添加了。
    至于它的作用,在此做一下简单的说明吧:
    1)在Toolbar这个控件出现之前,其实我们也可以通过 ActionBar actionBar = getSupportActionBar(); 方法获取到acitonbar,(前提你的activity主题theme,是采用的带actionbar的主题,如果你采用这样的主题android:theme="@style/Theme.AppCompat.Light.NoActionBar">拿到的actionBar也是 null,显然是不行的)之后你就可以采用诸如下面的方面来操作actionbar啦。

     ActionBar actionBar = getSupportActionBar();
            if (actionBar != null) {
                actionBar.setDisplayHomeAsUpEnabled(true);
                actionBar.setDisplayShowTitleEnabled(true);
                actionBar.setTitle("主标题");
                   ......
            } else {
                Log.i(TAG, "onCreate: actionBar is null");
            }

    但是,原生自带的ActionBar设置的灵活性,还是有限,因此Toolbar 这个控件,也就应运而生啦!此时,有的小伙伴说了,我虽然使用了Toolbar来代替ActionBar,但是我还想使用ActionBar的一些特性怎么办呢?这个时候 setSupportActionBar(toolbar);就发挥其作用啦。添加这行代码,你的toolbar可以说也就具有了ActionBar的相关属性了。好啦,到此setSupportActionBar(toolbar) 的作用也讲完了。如果你还不太明白的话,可以参考一下篇文章:
    ActionBar和Toolbar的基础使用

    结合menu配置文件的用法。

    这里先看一下效果图:
    这里写图片描述

    首先在menu文件夹中,创建名为 menu.xml 文件(文件名随意的):

    <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:icon="@drawable/ic_search"
            android:title="Search"
            app:showAsAction="ifRoom" />
        <item
            android:id="@+id/action_notifications"
            android:icon="@drawable/ic_delete_white_24dp"
            android:title="notifications"
            app:showAsAction="ifRoom" />
        <item
            android:id="@+id/action_settings"
            android:icon="@mipmap/ic_launcher"
            android:orderInCategory="100"
            android:title="@string/action_settings"
            app:showAsAction="never" />
    </menu>
    
    

    然后在代码中这样加载该menu文件即可:

     toolbar.inflateMenu(R.menu.menu);

    最后运行代码,就是上图的效果。

    在这里,app:showAsAction 属性还是很有必要介绍一下滴。
    app:showAsAction 有以下三个属性:

    1. ifRoom 表示在屏幕空间足够的情况下显示在Toolbar中,不够的话就显示在菜单中
    2. never 表示永远不显示在Toolbar中,而是一直显示在菜单中
    3. always 表示永远显示在Toolbar中,如果屏幕空间不够则不显示

    注意:Toolbar中的action按钮只会显示图标,菜单中的action按钮只会显示文字。

    那如果设置了ifRoom 属性之后,既然只显示图标不显示文字,那还设置 android:title=”Search” 文字干嘛呢?如果你设置了之后,虽然不显示,但是你长按相应按钮后,就会吐司相应文字内容的。

    细心的你可能发现还有些不足的地方,就是上图的点击菜单选项时,弹出的菜单位置有点太靠上啦,能不能设置呢,还有菜单的背景和文字颜色能不能设置呢?答案当然是可以的!

    首先设置好样式:

     <style name="ToolbarPopupTheme" parent="@style/ThemeOverlay.AppCompat.Dark">
             <!--<item name="android:colorBackground">#000000</item>--> <!--这里可以改变菜单的背景色-->
            <item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item> <!--新增一个item,用于控制menu-->
        </style>
    
        <style name="OverflowMenuStyle" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
            <item name="overlapAnchor">false</item>  <!--把该属性改为false即可使menu位置位于toolbar之下-->
        </style>

    然后直接在这里引用就可以了: app:popupTheme=”@style/ToolbarPopupTheme”

     <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorAccent"
            app:popupTheme="@style/ToolbarPopupTheme">
    
            <TextView
                android:id="@+id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="标题"
                android:textColor="@color/white"
                android:textSize="22sp" />
    
        </android.support.v7.widget.Toolbar>

    效果图:
    这里写图片描述

    与AppBarLayout结合的使用

    (1): app:layout_scrollFlags=”scroll”

    xml代码:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout 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.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
    
            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?android:attr/actionBarSize"
                android:background="@color/colorAccent"
                app:layout_scrollFlags="scroll"
                app:popupTheme="@style/ToolbarPopupTheme">
    
            </android.support.v7.widget.Toolbar>
    
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.NestedScrollView
            android:id="@+id/nestedScrollView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_margin="16dp"
                    android:text="@string/large_text" />
    
            </LinearLayout>
    
    
        </android.support.v4.widget.NestedScrollView>
    
    
    </android.support.design.widget.CoordinatorLayout>
    

    首先注意最外层:包裹了一层 android.support.design.widget.CoordinatorLayout 布局,那CoordinatorLayout 布局是什么的,我们可以理解为它是加强版的FramLayout。然后注意:Toolbar 的新添加的这条属性 app:layout_scrollFlags=”scroll” 。最后看一看效果图:
    这里写图片描述

    PS:对于 scroll 属性,网上也有说的比较专业的,不过我认为从产生的效果角度去分析的话,那就是:往上滑动就不说了,往下滑动就是当下面的滚动布局滑动到顶端时,标题栏toolbar才会滑出来。该属性实用性一般吧。

    (2):app:layout_scrollFlags=”scroll|enterAlways”

    scroll 与 enterAlways 结合产生的效果图如下:

    这里写图片描述

    PS:我们还是从产生的效果角度去分析的:往下滑动时,,标题栏 toolbar 会优先滑出来,然后滚动布局才开始滑动。就像该单词的意思一样:总是在。也就是只要添加了该属性值,下滑时 toolbar 总是优先滑出来。该属性比较实用。

    (3): app:layout_scrollFlags=”scroll|enterAlways|snap”

    在以上基础上,在与 snap 结合所产生的效果图如下:
    这里写图片描述

    PS:还是从产生的效果角度去分析的:不管是往下或者往上滑动时,,标题栏 toolbar 首先还是和(2)中一样的,不过有个细微的不同,toolbar会根据当前的滚动距离,自动选择是隐藏还是显示。该属性实用性也一般。

    (4): app:layout_scrollFlags=”scroll|enterAlways|exitUntilCollapsed”

    scroll 与 enterAlways 与 exitUntilCollapsed 结合所产的效果图如下:
    这里写图片描述

    注意此时Toolbar的布局有些许改变(改变后的):

     <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="100dp"
                android:background="@color/colorAccent"
                android:minHeight="40dp"
                app:layout_scrollFlags="scroll|enterAlways|exitUntilCollapsed"
                app:popupTheme="@style/ToolbarPopupTheme">
    
            </android.support.v7.widget.Toolbar>

    我们给Toolbar 设置了一个最小高度 android:minHeight=”40dp”,然后又把正常高度改变了,并随意改成了100dp。

    PS:还是从产生的效果角度去分析的:默认toolbar 显示的正常高度值我们设置成的100dp,当我们上滑的时候,高度达到最小高度40dp时,toolbar不在滑动了。该属性感觉实用性不强。

    (5): app:layout_scrollFlags=”scroll|enterAlways|enterAlwaysCollapsed”

    scroll 与 enterAlways 与 enterAlwaysCollapsed 结合所产的效果图如下:

    这里写图片描述

    xml中Toolbar 的布局和(4)还是一样的,不过app:layout_scrollFlags属性,由原来的exitUntilCollapsed改为enterAlwaysCollapsed。

    PS:还是从产生的效果角度去分析的:默认toolbar 显示的正常高度值我们设置成的100dp,当我们上滑的时候,toolbar直到完全隐藏时,下面的滚动布局才开始发生滚动;下滑时toolbar会优先滑出设置的最小高度值,然后当滚动布局下滑到顶部时,后面的toolbar部分,才开始完全显示(滑)出来。该属性感觉实用性也不强。

    与CollapsingToolbarLayout结合的使用

    (1):先看下效果图:
    这里写图片描述

    再把代码贴上:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout 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:fitsSystemWindows="true">
    
        <android.support.design.widget.AppBarLayout
            android:id="@+id/app_bar"
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:fitsSystemWindows="true"
            android:theme="@style/AppTheme.NoActionBar.AppBarOverlay">
    
             <!--本次重点关注这里 CollapsingToolbarLayout -->
            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/toolbar_layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                app:contentScrim="?attr/colorPrimary"
                app:layout_scrollFlags="scroll">
    
                <ImageView
                    android:id="@+id/image"
                    android:layout_width="match_parent"
                    android:layout_height="180dp"
                    android:scaleType="centerCrop"
                    android:src="@drawable/ic_image"
                    app:layout_collapseMode="parallax" />
    
    
                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    app:layout_collapseMode="pin"
                    app:navigationIcon="@drawable/ic_back_white_24dp"
                    app:popupTheme="@style/AppTheme.NoActionBar.PopupOverlay"
                    app:title="标题"
                    app:titleTextColor="@color/white">
    
    
                </android.support.v7.widget.Toolbar>
    
            </android.support.design.widget.CollapsingToolbarLayout>
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/text_margin"
                android:text="@string/large_text" />
    
        </android.support.v4.widget.NestedScrollView>
    
    
    </android.support.design.widget.CoordinatorLayout>
    

    这里我们重点关注 CollapsingToolbarLayout控件 以下的几个属性:

    • app:contentScrim=”?attr/colorPrimary” 当上滑到toolbar 高度期间直到达到toolbar高度时,给toolbar设置的背景色,以及过渡颜色。当然,这里不仅仅可以设置颜色,也可以设置图片。 如果不设置该属性,标题栏会过渡为以之前的图片为背景。
    • app:layout_scrollFlags=”scroll” 和介绍 AppBarLayout 时,给Toolbar 设置和配置一样。其效果上图已做展示。
    • app:expandedTitleGravity=”center_horizontal” 从单词意思可以看出,这是展示后,title的位置。
    • app:expandedTitleMarginStart=”50dp” 从单词意思可以看出,这是展示后,title 距离开始位置的边距。
    • app:collapsedTitleGravity=”center” 从单词意思可以看出,这是收缩后,title 位置(测试发现,不好用)。
    • app:expandedTitleTextAppearance=”@style/transparentText” 展开后标题文字的样式
    • app:collapsedTitleTextAppearance=”@style/ToolbarTitle” 折叠后标题文字的样式

    给 ImageView 控件 设置的 app:layout_collapseMode=”parallax” 属性说明:
    app:layout_collapseMode有两个参数:

    • parallax 子View可以选择在当前的布局当时是否以“视差”的方式来跟随滚动。(PS:其实就是让这个View的滚动的速度比其他正常滚动的View速度稍微慢一点)。
    • pin 测试发现,按照以上的布局,如果你使用pin参数,看效果,和使用parallax 参数,好像没有什么区别。目前个人认为的区别后面在做介绍。

    注意事项:

    1.上图中背景图,也就是xml中的 ImageView 控件,设置的图片大小,在保证显示正常的情况下,越小越好。太大的话,在展示的时候,会有卡顿的感觉。


    下面我们来看一个效果图:
    这里写图片描述

    如果你发现展开和折叠后的标题字体太小或太大,你可通过如下两个属性设置:

     app:expandedTitleTextAppearance="@style/transparentText" 展开后标题文字的样式  
     app:collapsedTitleTextAppearance="@style/ToolbarTitle" 折叠后标题文字的样式
    

    transparentText (透明)样式:

    <style name="transparentText" parent="TextAppearance.AppCompat.Small">
            <item name="android:textColor">#00000000</item>
             <item name="android:textSize">15sp</item>
        </style>
    

    ToolbarTitle样式:

    <style name="ToolbarTitle" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
           <item name="android:textColor">#f0f0</item>
            <item name="android:textSize">15sp</item>
        </style>

    细心的你,会发现我们的状态栏,现在是完全透明的状态。那我们怎么实现呢?那你会说了,那还不简单!
    使用下面的代码:

     //透明状态栏效果
            if (Build.VERSION.SDK_INT >= 21) {
                View decorView = getWindow().getDecorView();
                int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
                decorView.setSystemUiVisibility(option);
                getWindow().setStatusBarColor(Color.TRANSPARENT);
    
            }

    不就能实现吗!或者使用第三方 透明状态栏设置库。很简单的就能实现了。如果你真正具体操作了,运行代码了。你会发现,是实现不了的。不过你把上述代码中 ImageView 控件的 app:layout_collapseMode 的参数设置为 pin 。如下:
    app:layout_collapseMode=”pin” 。此时你在试一下,就能实现上图的效果啦。现在也能说明,parallax 和 pin 的一个区别吧。

    app:layout_scrollFlags=”scroll|enterAlways”

    那么 app:layout_scrollFlags=”scroll|enterAlways” 效果怎样呢?下面看图说话:

    这里写图片描述

    PS:这里也不再多说了,原理和介绍 AppBarLayout 时,给Toolbar 设置和配置基本差不多。

    app:layout_scrollFlags=”scroll|exitUntilCollapsed”

    效果图:
    这里写图片描述

    app:layout_scrollFlags=”scroll|enterAlways|exitUntilCollapsed”

    PS:这里不再贴出效果图啦,聪明的你,相信也能想象出其效果。(不过这样结合的配置,感觉不常用也不太实用。上面贴图的几种效果,还比较实用一些。)

    文章写了好几天,才算写的个差不多,如果对你有些帮助的话,给个赞和好评吧!

    引申拓展—–实现悬浮栏的效果

    如何自定义Toolbar 标题栏


    ToolBar 的封装

    Android ToolBar 使用完全解析

    【android MaterialDesign】 用法总结

    Android 详细分析AppBarLayout的五种ScrollFlags

    展开全文
  • 为了实现toolbar的各种炫酷效果,使用了CoordinatorLayout 但是DrawerLayout不能设置below属性 所以我的DrawerLayout被toolbar遮盖了一部分 ![图片说明]...
  • Toolbar的简单介绍和如何简单自定义toolbar

    万次阅读 热门讨论 2015-11-29 20:43:10
    通过本篇可以了解到: 1.什么是ToolBar 2.ToolBar 的一些重要属性 3.如何自定义ToolBar
  • 如题,recyclerview上下滑动toolbar没有反应 xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/container" android:...
  • VS10创建的MDI 多文档程序,有2个文档模板,分别对应View1 和View2 两种视图,View1对应工具条ToolBar1 ,View2对应工具条Toolbar2。 我想实现:View1 激活时,显示ToolBar1; View2激活时,显示ToolBar2。 目前,...
  • Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); // toolbar.setNavigationIcon(R.mipmap.ic_launcher);//设置导航栏图标 toolbar.setLogo(R.drawable.ic_launcher);//设置app logo toolbar....
  • toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.inflateMenu(R.menu.menu_main); toolbar.setNavigationIcon(R.drawable.ic_menu); toolbar.setOnMenuItemClickListener(this); ``` ``` ...
  • Android Material Design之Toolbar与Palette实践

    万次阅读 多人点赞 2014-11-24 10:28:50
    我们都知道Marterial Design是Google推出的全新UI设计规范,如果对其不太了解的可以看下:Material design非官方中文指导手册 ,或者我的前面几篇Material Design的译文,相比之前Google在Android Holo风格上平平...
  • ToolBar 的封装

    千次下载 热门讨论 2015-06-12 23:54:03
    ToolBar 的封装,使代码步重复,快捷开发

空空如也

1 2 3 4 5 ... 20
收藏数 21,151
精华内容 8,460
关键字:

toolbar