android–UI–导航条toolbar
标签(空格分隔): android UI toolbar
参考http://www.codeceo.com/article/android-toolbar-develop.html,自己加以理解。
开发工具:
AS2.1.2关于toolbar
Google
在2015的IO大会上发布了系列的Material Design风格的控件。
其中ToolBar是替代ActionBar的控件。
由于ActionBar在各个安卓版本和定制Rom中的效果表现不一,导致严重的碎片化问题
ToolBar
应运而生。
使用toolbar
效果图:
关于引入兼容包问题
我直接打开的as新建工程,设置最低版本4.0,自带sdk6.0,没有这个问题。
添加toolbar
主activity—_main.xml
文件添加引入
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.administrator.toolbartest.MainActivity"
android:orientation="vertical">
<!--引入Toolbar代码,包含一个TextView-->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#98bc98" >
<!--自定义控件-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Clock" />
</android.support.v7.widget.Toolbar>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</LinearLayout>
引入Toolbar代码,包含一个TextView
ToolbarActivity 中调用 Toolbar
导入包 import android.support.v7.widget.Toolbar;
调用Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
使用set方式设置Toolbar的各种属性,只要toolbar.set然后ide就会告诉你能设置什么。
具体看代码
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.os.Bundle;
import android.view.Window;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉了默认的导航栏(注意和以前的不同)
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.mipmap.ic_home);//设置导航栏图标
toolbar.setLogo(R.mipmap.ic_launcher);//设置app logo
toolbar.setTitle("主标题");//设置主标题
toolbar.setSubtitle("子标题");//设置子标题
}
}
效果如图:
创建menu文件
和
原图中还有右边的搜索提醒等等是一个menu控件
和eclipse不同,as创建menu文件夹也需要创建文件夹。具体如下:
参考文章:http://www.cnblogs.com/ssqqhh/p/5213331.html
<?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/action_search"
android:icon="@mipmap/ic_search"
android:title="@string/menu_search"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_notification"
android:icon="@mipmap/ic_notifications"
android:title="@string/menu_notifications"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_item1"
android:title="@string/item_01"
app:showAsAction="never" />
<item
android:id="@+id/action_item2"
android:title="@string/item_02"
app:showAsAction="never" />
</menu>
代码中绑定
toolbar.inflateMenu(R.menu.base_toolbar_menu);
//设置右上角的填充菜单
所有的控件添加点击事件
样式设置好了最重要的就是点击事件。
各个部分的点击事件:参考文章 http://blog.csdn.net/flykozhang/article/details/50280109
Navigation点击
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"Navigation",Toast.LENGTH_SHORT).show();
}
});
menu菜单的点击事件;
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int menuItemId = item.getItemId();
if (menuItemId == R.id.action_search) {
Toast.makeText(ToolBarActivity.this , R.string.menu_search , Toast.LENGTH_SHORT).show();
} else if (menuItemId == R.id.action_notification) {
Toast.makeText(ToolBarActivity.this , R.string.menu_notifications , Toast.LENGTH_SHORT).show();
} else if (menuItemId == R.id.action_item1) {
Toast.makeText(ToolBarActivity.this , R.string.item_01 , Toast.LENGTH_SHORT).show();
} else if (menuItemId == R.id.action_item2) {
Toast.makeText(ToolBarActivity.this , R.string.item_02 , Toast.LENGTH_SHORT).show();
}
return true;
}
});
其他点击事件用的不多
总体代码:
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉了默认的导航栏(注意和以前的不同)
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.mipmap.ic_home);//设置导航栏图标
toolbar.setLogo(R.mipmap.ic_launcher);//设置app logo
toolbar.setTitle("主标题");//设置主标题
toolbar.setSubtitle("子标题");//设置子标题
toolbar.inflateMenu(R.menu.base_toolbar_menu);//设置右上角的填充菜单
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"Navigation",Toast.LENGTH_SHORT).show();
}
});
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int menuItemId = item.getItemId();
if (menuItemId == R.id.action_search) {
Toast.makeText(MainActivity.this , "menu_search" , Toast.LENGTH_SHORT).show();
} else if (menuItemId == R.id.action_notification) {
Toast.makeText(MainActivity.this , "menu_notifications" , Toast.LENGTH_SHORT).show();
} else if (menuItemId == R.id.action_item1) {
Toast.makeText(MainActivity.this , "item_01" , Toast.LENGTH_SHORT).show();
} else if (menuItemId == R.id.action_item2) {
Toast.makeText(MainActivity.this , "item_02" , Toast.LENGTH_SHORT).show();
}
return false;
}
});
}
}
效果
作者:lw_zhaoritian 发表于2016/8/25 19:45:15 原文链接
阅读:62 评论:0 查看评论