更换Actionbar,Toolbar的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39238370/article/details/78871029

一.改变style

首先要把系统的style,改为无ActionBar的样式,设置主题的颜色,然后引用样式。

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
 <item name="colorPrimary">@color/colorPrimary</item>
 <item name="colorPrimaryDark">@color/colorPrimaryDar     k</item>
 <item name="colorAccent">@color/colorAccent</item>
 </style>

//参照的信息

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <!--导航栏底色-->
        <item name="colorPrimary">@color/accent_material_dark</item>
        <!--状态栏底色-->
        <item name="colorPrimaryDark">@color/accent_material_light</item>
        <!--导航栏上的标题颜色-->
        <item name="android:textColorPrimary">@android:color/black</item>
        <!--Activity窗口的颜色-->
        <item name="android:windowBackground">@color/material_blue_grey_800</item>
        <!--按钮选中或者点击获得焦点后的颜色-->
        <item name="colorAccent">#00ff00</item>
        <!--和 colorAccent相反,正常状态下按钮的颜色-->
        <item name="colorControlNormal">#ff0000</item>
        <!--Button按钮正常状态颜色-->
        <item name="colorButtonNormal">@color/accent_material_light</item>
        <!--EditText 输入框中字体的颜色-->
        <item name="editTextColor">@android:color/white</item>
    </style>

二.Toobar的布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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.tk.toolbardemo.MainActivity">
    <!--设置toolbar的背景色,colorPrimary是style中设置的-->
    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:background="?attr/colorPrimary">
        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>
</RelativeLayout>

三. 在主布局中直接更换ActionBar

public class MainActivity extends AppCompatActivity implements Toolbar.OnMenuItemClickListener {

    private Toolbar mToolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initBar();
    }

    private void initBar() {
        mToolbar = (Toolbar) findViewById(toolbar);
        //设置当前的ActionBar
        setSupportActionBar(mToolbar);

        getSupportActionBar().setDisplayShowTitleEnabled(true);
        mToolbar.setTitle("标题");
        mToolbar.setSubtitle("副标题");
        mToolbar.setLogo(R.mipmap.ic_launcher);
        //设置Toobar的home键的(返回按钮)
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        mToolbar.setOnMenuItemClickListener(this);
    }

    /**
     * 自己写的menu文件的按钮的监听
     */
    @Override
    public boolean onMenuItemClick(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_edit:
                Toast.makeText(this, "第一个图标", Toast.LENGTH_SHORT).show();
                break;
            case R.id.action_share:
                Toast.makeText(this, "第二个图标", Toast.LENGTH_SHORT).show();
                break;
        }
        return false;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //通过menu文件来把加载进去
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    /**
     * 系统按钮的监听
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == android.R.id.home) {
            Toast.makeText(this, "home键", Toast.LENGTH_SHORT).show();
            return true;
        }
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            Toast.makeText(this, "设置按钮", Toast.LENGTH_SHORT).show();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

四. 加载的menu文件

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_edit"
        android:icon="@mipmap/ic_launcher"
        android:title="查找"
        app:showAsAction="always"/>

    <item
        android:id="@+id/action_share"
        android:icon="@mipmap/ic_launcher"
        android:title="分享"
        app:showAsAction="always"/>

    <item
        android:id="@+id/action_settings"
        android:title="设置"
        app:showAsAction="never"/>
    <!-- showAsAction:never:就是点击三个点,显示的字体
                      always:就是在toobar上面的小图标,
     有的朋友就会问为什么会看见图片,你不是设置title了吗?
     因为图片把title遮挡住了-->
</menu>

五.大体就是这样

这里写图片描述

demo地址
github地址

猜你喜欢

转载自blog.csdn.net/qq_39238370/article/details/78871029
今日推荐