MaterialDesign,toolbar的使用

好几天没写过了,这谢天被toolbar给整死了,毕竟新手一个。哎!

首先使用的toolbar为了适配5.0以下的系统,我们使用V7包,所以项目需要支持V7包,为了替换掉acticonbar,我们在style中设置一个没有acticonbar的主题

<style name="MyTheme" parent="Theme.AppCompat">

    </style>

    <style name="MyTheme.NoActionBar" parent="MyTheme">
        <!-- Both of these are needed -->
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <!--<item name="android:windowBackground">@color/colorPrimaryDark</item>-->
        <!--<item name="android:windowIsTranslucent">true</item>-->
    </style>

在XML布局,由于toolbar其实是一个viewgroup,所以可以设置背景等

 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:title="个人信息"
        app:titleMarginStart="80dp"
        android:background="@color/blue"/>
JAVA代码中,这边注意setNavigationIcon必须在setSupportActionBar后面

if (toolbar != null) {
            toolbar.setTitle("好友动态");
            toolbar.setTitleTextAppearance(FrendCircleActivity.this, R.style.MyTitleStyle);
            setSupportActionBar(toolbar);
            toolbar.setNavigationIcon(R.drawable.back);

        }

        toolbar.setBackgroundColor(getResources().getColor(R.color.blue));
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
,这里我想把主标题设为居中,找了网上好多办法,一直没有用,所以在上面XML中设了一个左边距。。。

还可以给toolbai加上一个menu

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.bestsch.hy.wsl.bestsch.tablehost.SampleActivity">

    <item
        android:id="@+id/action_edit"
        android:icon="@drawable/ab_edit"
        android:orderInCategory="80"
        android:title="@string/action_edit"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/action_share"
        android:icon="@drawable/ab_share"
        android:orderInCategory="80"
        android:title="@string/action_edit"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/action_settings"
        android:icon="@drawable/icon_setup_normal"
        android:orderInCategory="80"
        android:title="@string/action_settings"
        app:showAsAction="ifRoom">
        <menu>
            <item
                android:id="@+id/bac_default"
                android:orderInCategory="100"
                android:title="DEFAULT_BAC"
                app:showAsAction="ifRoom" />
            <item
                android:id="@+id/bac_red"
                android:orderInCategory="100"
                android:title="RED_BAC"
                app:showAsAction="ifRoom" />
            <item
                android:id="@+id/bac_blue"
                android:orderInCategory="100"
                android:title="BLUE_BAC"
                app:showAsAction="ifRoom" />
            <item
                android:id="@+id/bac_blue_grey"
                android:orderInCategory="100"
                android:title="BLUE_GREY"
                app:showAsAction="ifRoom" />
        </menu>
    </item>
</menu>
记得在页面中加载menu

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

这样的话基本实现了一个toolbar的功能了,下面是一直困扰了好久的问题了,我想实现一个上划隐藏TOOLBAR,下拉在显示的效果

网上也找了好久,一直不知道问什么我滑动后隐藏toolbar但是一直会有个背景遮住了下面的viewpager。。。今天终于解决了,原来是因为FragmentLayout的高度一直没计算正确

FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) title.getLayoutParams();
                WindowManager wm = (WindowManager) context
                        .getSystemService(Context.WINDOW_SERVICE);
                int height = wm.getDefaultDisplay().getHeight();
                //lp的高度计算问题,可能存在问题,底部显示不全
                lp.height = (int) (height - translationY
                        - 100);
                lp.height -= getNavigationBarHeight();
                Log.i("TEST", "after" + Float.toString(toolbar.getHeight()));
                title.requestLayout();


好了,想到的就这么多了,我也是郁闷啊。。。

附张图片:

                     




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值