Android UI :Try of Toolbar
来源:互联网 发布:交大长天软件怎么样 编辑:程序博客网 时间:2024/06/17 03:41
这几天刚刚接触到Android开发,当然也是因为公司的需要,作为一个developer,肯定希望自己的应用能够美观,不然看着自己都头痛,更何况别人呢,所以从今天开始我要开始记下我的心得,好记性不如烂笔头嘛,而且自己写的东西也比较适合自己解决问题,也希望对小伙伴们有所帮助,废话不多说,来看看我第一个要记下的Object是谁,hiahia,就是大家所熟悉的Toolbar了,它的一个优点是本身就是一个ViewGroup,所以它所包含的东西可以DIY啦。不信你看下图:
![](file:///C:\Users\LHT\AppData\Roaming\Tencent\Users\630781464\QQ\WinTemp\RichOle\8T3DV(EAYOLJE0[%)0KWQ6N.png)
也许你发现了,它是android.support.v7.widget的Toolbar,所以在你的build.gradle配置文件中加入
compile 'com.android.support:design:23.4.0'
我们先来简单的认识一下这个Toolbar,作为MD(material design)的一个ViewGroup,看看包含了哪些东西(更多具体的请自己去官网看,我这里指说我平常用得到的)
好了,我们看到了Toolbar的一些经常用得到的区域或者属性(这张图片也是用的别人文章里面的),所代表的东西大家也都能一目了然,首先来看看我做出来的效果
那么是怎么实现的呢,首先我的这个Toolbar是嵌套在DrawerLayout之中的,关于DrawerLayout我下一篇文章再讲。
我们来看看整个的布局文件 activity_main.xml
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout android:id="@+id/mydrawer" 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:fitsSystemWindows="true" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.lht.test.MainActivity" android:layout_gravity="start" > <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#f6f4f4"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <include android:id="@+id/mtoolbar" layout="@layout/toolbar"/> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main"/> </android.support.design.widget.CoordinatorLayout> <include layout="@layout/common_drawer"/></android.support.v4.widget.DrawerLayout>这里提到了本文没有提到的布局,CoodinatorLayout、AppBarLayout、DrawerLayout,这些在后面都会一一讲解,本文重点讲Toolbar。
大家看到了Toolbar被包含在AppBarLayout之中,布局文件为toolbar.xml,好,我们来看看它的布局文件
<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.Toolbar xmlns:toolbar="http://schemas.android.com/apk/res-auto" 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="wrap_content" toolbar:navigationIcon="@drawable/abc_ic_ab_back_mtrl_am_alpha" toolbar:titleMarginStart="80dp" android:background="#FF4081" toolbar:title="ToolbarDemo" toolbar:theme="@style/ToolbarTheme" toolbar:popupTheme="@style/ThemeOverlay.AppCompat.Light" ></android.support.v7.widget.Toolbar>这里要重点说一下,设置Toolbar的一些属性必须要添加
xmlns:toolbar="http://schemas.android.com/apk/res-auto"然后看看这个布局文件有什么,首先添加了一个Toolbar,设置了标题,背景,主题,以及菜单的主题popupTheme,主题文件实在res/values/styles.xml中进行创建,整体效果在上面的图片中能看出来,其他的一些属性大家也都能看出代表什么,接下来看看我的style.xml文件
所设置的颜色在左边也能看到,之前我要把左上角的按钮的颜色改为白色,但是又不用白色的按钮去替换,在网上找了好多文章,都是说什么深色主题和浅色主题的,到最后根本没有解决我的问题,也许是我智商有限,最后找到了一篇文章的解决办法是在Toolbar引用的主题设置中添加如下代码
<item name="android:colorControlNormal">#FFFFFF</item>中间为你想设置的颜色值,想让按钮为什么颜色就是什么颜色,这也是我搞了好久都没搞好的,是不是体会到了Toolbar所带来的DIY的乐趣,不仅可以设置颜色,还可以设置菜单的弹出动作,大家可以去网上查看,有很多文章,接下来为Toolbar添加菜单,就是实现以下的效果
这张图是别人的,我手机没电了。。。。不能截图给大家看了。。。。
添加菜单的第一步就是要创建菜单,在res/menu目录下进行创建,下面是我创建的菜单mymenu.xml(不懂得赶紧去学一下)
<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.melo.blog.wigetdemo.MainActivity"> <item android:id="@+id/action_settings" android:orderInCategory="1" android:title="menu0" app:showAsAction="never" /> <item android:id="@+id/action_about" android:orderInCategory="2" android:title="menu1" app:showAsAction="never" /> <item android:id="@+id/action_share" android:orderInCategory="3" android:title="menu" app:showAsAction="never"/> <item android:id="@+id/action_like" android:orderInCategory="4" android:title="menu" app:showAsAction="never" /> <item android:id="@+id/action_collect" android:orderInCategory="5" android:title="menu" app:showAsAction="never" /></menu>其中showAsAction有几个值:
never:只在菜单弹出的时候显示
isRoom:如果Toolbar有足够的空间就直接显示在Toolbar上面,如果没有就显示在弹出的菜单列表中
最后填充menu,在activity中对点击事件可以进行监听,代码如下:
import android.os.Bundle;import android.os.PersistableBundle;import android.support.annotation.Nullable;import android.support.v4.widget.DrawerLayout;import android.support.v7.app.ActionBarDrawerToggle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements Toolbar.OnMenuItemClickListener { DrawerLayout drawerlayout; Toolbar toolbar; ActionBarDrawerToggle mToggle ; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); initView(); initListener(); } @Override public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) { super.onPostCreate(savedInstanceState, persistentState); } private void initView() { setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.mtoolbar); setSupportActionBar(toolbar); drawerlayout=(DrawerLayout)findViewById(R.id.mydrawer); mToggle = new ActionBarDrawerToggle (this,drawerlayout,toolbar, R.string.open,R.string.close); drawerlayout.addDrawerListener(mToggle); } private void initListener() { toolbar.setOnMenuItemClickListener(this); } @Override public boolean onMenuItemClick(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.action_settings: Toast.makeText(this, "setting", Toast.LENGTH_SHORT).show(); break; case R.id.action_about: Toast.makeText(this, "action_about", Toast.LENGTH_SHORT).show(); break; case R.id.action_collect: Toast.makeText(this, "action_collect", Toast.LENGTH_SHORT).show(); break; case R.id.action_like: Toast.makeText(this, "action_like", Toast.LENGTH_SHORT).show(); break; case R.id.action_share: Toast.makeText(this, "action_share", Toast.LENGTH_SHORT).show(); break; } return false; } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.mymenu,menu); return super.onCreateOptionsMenu(menu); }}如果有什么问题请留言,阿里嘎多~~~
- Android UI :Try of Toolbar
- Android常用UI之Toolbar
- Android UI(ActionBar+Toolbar)详解
- android--UI--导航条toolbar
- Android常用UI之Toolbar
- 【Android UI】状态栏和toolbar颜色一致
- 【Android UI】CoordinatorLayout实现带图片可拉伸的Toolbar
- Android UI学习笔记 之 ActionMode不能覆盖Toolbar解决方案
- Android的UI优化--Material Design之ToolBar(2017.06)
- First Class: UI of Android
- UI, 基础控件,ToolBar,...
- ActionBar/Toolbar定制ui
- Android Toolbar
- android ToolBar
- android toolbar
- Android Toolbar
- Android ToolBar
- Android Toolbar
- Struts2笔记
- android利用shap画小圆圈(空心圆、实心圆)
- POJ 3321 Apple Tree
- ViewAnimation和DrawableAnimation
- android studio renamed plugin
- Android UI :Try of Toolbar
- 删除远程svn上idea中的module (另附Linux解压命名)
- 数据存储和界面展现之二
- 位运算符,逻辑运算符,比较运算符
- Android-自定义PopupWindow
- 跟我学Java多线程——线程池与阻塞队列
- 1019 数字黑洞
- C语言整型溢出会怎样
- VR Unreal视频