您的位置:首页 > 其它

MaterialDesign,toolbar的使用

2015-06-11 16:41 190 查看
好几天没写过了,这谢天被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();

好了,想到的就这么多了,我也是郁闷啊。。。
附张图片:


                     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: