ToolBar的使用

来源:互联网 发布:空间分辨率知乎 编辑:程序博客网 时间:2024/06/06 11:03

1.为了版本冲突添加依赖

compile 'com.android.support:appcompat-v7:26.1.0'
2.定义类型

<style name="AppTheme.Base"><!--将ActionBar隐藏,这里使用ToolBar--><item name="windowActionBar">false</item><!-- 使用 API Level 22以上编译的话,要拿掉前綴字 --><item name="windowNoTitle">true</item><!--colorPrimaryDark对应状态栏的颜色--><item name="colorPrimaryDark">@color/statusColor</item><!--colorPrimary 对应ToolBar的颜色--><item name="colorPrimary">@color/toolBarColor</item><!--colorAccent 对应EditText编辑时、RadioButton选中、CheckBox等选中时的颜色。--><item name="colorAccent">@color/editColor</item><!--窗口的颜色--><item name="android:windowBackground">@color/widowColor</item>3.改变Mainfast中的Them
<application    android:allowBackup="true"    android:icon="@mipmap/ic_launcher"    android:label="@string/app_name"    android:roundIcon="@mipmap/ic_launcher_round"    android:supportsRtl="true"    android:theme="@style/AppTheme.Base">//需要改变的东西    <activity android:name=".MainActivity">        <intent-filter>            <action android:name="android.intent.action.MAIN" />            <category android:name="android.intent.category.LAUNCHER" />        </intent-filter>    </activity></application>
4.创建menu
1.创建menu文件夹:
src上右键->new->android rescourse directory->Resocurse type=menu,这样就创建了一个menu文件夹
2.创建menu文件:
在menu文件夹中创建layout文件夹menu_main内容如下:
<?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"    xmlns:tools="http://schemas.android.com/tools"    tools:context=".MainActivity">    <item        android:id="@+id/action_edit"        android:icon="@mipmap/ic_launcher"        android:orderInCategory="80"        android:title="输入"        app:showAsAction="ifRoom" />    <item        android:id="@+id/action_share"        android:icon="@mipmap/ic_launcher"        android:orderInCategory="90"        android:title="分享"        app:showAsAction="ifRoom" />    <item        android:id="@+id/action_overflow"        android:orderInCategory="100"        android:title="更多"        android:icon="@mipmap/ic_launcher"        app:showAsAction="always" /></menu>
5.color中的资源
<!-- toolBar color --><color name="toolBarColor">#0000ff</color><!--EditText,RadioButton,CheckBox color--><color name="editColor">#FD87A9</color><!--Window color--><color name="widowColor">#ffffff</color>
6.布局:action_overflow_popwindow
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="#274B5E"    android:orientation="vertical"    android:padding="10dp"    >    <LinearLayout        android:id="@+id/ll_item1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center">        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@mipmap/ic_launcher" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="10dp"            android:text="哈哈"            android:textColor="#ffffff"            android:textSize="20sp" />    </LinearLayout>    <LinearLayout        android:id="@+id/ll_item2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center">        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@mipmap/ic_launcher" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="10dp"            android:text="呵呵"            android:textColor="#ffffff"            android:textSize="20sp" />    </LinearLayout>    <LinearLayout        android:id="@+id/ll_item3"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center">        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@mipmap/ic_launcher" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="10dp"            android:text="嘻嘻"            android:textColor="#ffffff"            android:textSize="20sp" />    </LinearLayout></LinearLayout>
7.主布局
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout 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"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.bwie.day15.MainActivity">    <android.support.v7.widget.Toolbar        android:id="@+id/toolbar"        android:layout_width="match_parent"        android:layout_height="?attr/actionBarSize"        android:background="?attr/colorPrimary">        <!--添加Toolbar的子控件-->        <Button            android:id="@+id/btn_diy"            android:layout_width="60dp"            android:layout_height="wrap_content"            android:layout_gravity="right"            android:background="#80ffffff"            android:text="自定义按钮"            android:textColor="#000000"            android:textSize="11sp" />        <TextView            android:id="@+id/tv_title"            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_gravity="center"            android:gravity="center"            android:text="首页"            android:textColor="@android:color/black"            android:textSize="20sp" />    </android.support.v7.widget.Toolbar>    <TextView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:gravity="center"        android:text="Hello"        android:textColor="@android:color/black"        android:textSize="30sp" /></android.support.constraint.ConstraintLayout>
8.主要代码
import android.graphics.Color;import android.graphics.Rect;import android.graphics.drawable.ColorDrawable;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.Toolbar;import android.view.Gravity;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.PopupWindow;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    Toolbar mToolbar;    Toast mToast;    PopupWindow mPopupWindow;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);        mToast.setGravity(Gravity.CENTER, 0, 0);        mToolbar = (Toolbar) findViewById(R.id.toolbar);        // App Logo//        mToolbar.setLogo(R.drawable.app_icon);        // 主标题,默认为app_label的名字        mToolbar.setTitle("Title");        mToolbar.setTitleTextColor(Color.YELLOW);        // 副标题        mToolbar.setSubtitle("Sub title");        mToolbar.setSubtitleTextColor(Color.parseColor("#80ff0000"));        //侧边栏的按钮        mToolbar.setNavigationIcon(R.mipmap.ic_launcher);        //取代原本的actionbar        setSupportActionBar(mToolbar);        //设置NavigationIcon的点击事件,需要放在setSupportActionBar之后设置才会生效,        //因为setSupportActionBar里面也会setNavigationOnClickListener        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mToast.setText("click NavigationIcon");                mToast.show();            }        });        //设置toolBar上的MenuItem点击事件        mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {            @Override            public boolean onMenuItemClick(MenuItem item) {                switch (item.getItemId()) {                    case R.id.action_edit:                        mToast.setText("click edit");                        break;                    case R.id.action_share:                        mToast.setText("click share");                        break;                    case R.id.action_overflow:                        //弹出自定义overflow                        popUpMyOverflow();                        return true;                }                mToast.show();                return true;            }        });        //ToolBar里面还可以包含子控件        mToolbar.findViewById(R.id.btn_diy).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mToast.setText("点击自定义按钮");                mToast.show();            }        });        mToolbar.findViewById(R.id.tv_title).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mToast.setText("点击自定义标题");                mToast.show();            }        });    }    //如果有Menu,创建完后,系统会自动添加到ToolBar上    @Override    public boolean onCreateOptionsMenu(Menu menu) {        super.onCreateOptionsMenu(menu);        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }    /**     * 弹出自定义的popWindow     */    public void popUpMyOverflow() {        //获取状态栏高度        Rect frame = new Rect();        getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);        //状态栏高度+toolbar的高度        int yOffset = frame.top + mToolbar.getHeight();        if (null == mPopupWindow) {            //初始化PopupWindow的布局            View popView = getLayoutInflater().inflate(R.layout.action_overflow_popwindow, null);            //popView即popupWindow的布局,ture设置focusAble.            mPopupWindow = new PopupWindow(popView,                    ViewGroup.LayoutParams.WRAP_CONTENT,                    ViewGroup.LayoutParams.WRAP_CONTENT, true);            //必须设置BackgroundDrawable后setOutsideTouchable(true)才会有效            mPopupWindow.setBackgroundDrawable(new ColorDrawable());            //点击外部关闭。            mPopupWindow.setOutsideTouchable(true);            //设置一个动画。            mPopupWindow.setAnimationStyle(android.R.style.Animation_Dialog);            //设置Gravity,让它显示在右上角。            mPopupWindow.showAtLocation(mToolbar, Gravity.RIGHT | Gravity.TOP, 0, yOffset);            //设置item的点击监听            popView.findViewById(R.id.ll_item1).setOnClickListener(this);            popView.findViewById(R.id.ll_item2).setOnClickListener(this);            popView.findViewById(R.id.ll_item3).setOnClickListener(this);        } else {            mPopupWindow.showAtLocation(mToolbar, Gravity.RIGHT | Gravity.TOP, 0, yOffset);        }    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.ll_item1:                mToast.setText("哈哈");                break;            case R.id.ll_item2:                mToast.setText("呵呵");                break;            case R.id.ll_item3:                mToast.setText("嘻嘻");                break;        }        //点击PopWindow的item后,关闭此PopWindow        if (null != mPopupWindow && mPopupWindow.isShowing()) {            mPopupWindow.dismiss();        }        mToast.show();    }}


原创粉丝点击