Android 最新控件 Toolbar

时间:2022-03-11 05:27:22

之前Android的ActionBar好像做项目从没用过。除了google自己,并没有多少人用,究其原因,主要是由于ActionBar不够灵活,不可以随心所欲的定制,后来Goole也发现了这一点,然后,就诞生了今天的主角ToolBar,Toolbar是一个新出的控件,用来取代ActionBar,它本身是一个ViewGroup,所以有良好的可定制性,比如,你可以在里面防止布局,LinearLayout等,如今開始代码吧。

为了兼容底版本号,所以要使用V7包中的ToolBar。 android.support.v7.widget.Toolbar 这是全名,首先要在gradle中加一句

Android 最新控件 Toolbar

以下是我的gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.example.lenovo.myapplication"
        minSdkVersion 17
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.1'
}


2、Material Design的Theme

md的主题有:

  • @android:style/Theme.Material (dark version)
  • @android:style/Theme.Material.Light (light version)
  • @android:style/Theme.Material.Light.DarkActionBar

与之相应的Compat Theme:

  • Theme.AppCompat
  • Theme.AppCompat.Light
  • Theme.AppCompat.Light.DarkActionBar



然后再value中设置主题 去掉Actionbar

    <style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimaryDark">#7B1FA2</item>
        <item name="colorPrimary">#9C26B0</item>
        <item name="colorAccent">#ff4081</item>
        <item name="android:textColorPrimary">#fffdfbff</item>
    </style>
还有value12的主题


   <style name="AppTheme" parent="AppBaseTheme">
            <item name="android:statusBarColor">#7B1FA2</item>
        </style>

如今就能够使用toolebar了

这是我的主布局代码:

<LinearLayout 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"
    android:background="#fff"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/id_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        app:title="试一下">


        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/abc_text_size_title_material"
            android:gravity="center"

            android:orientation="vertical">


            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="线性布局" />


            <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </LinearLayout>

    </android.support.v7.widget.Toolbar>


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/abc_text_size_title_material"
        android:text="@string/hello_world" />


</LinearLayout>




Activity代码

package com.example.liran.workspace1;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toolbar;


public class MainActivity extends AppCompatActivity {

private android.support.v7.widget.Toolbar toolbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.id_toolbar);
         toolbar.setLogo(R.mipmap.ic_launcher);
         toolbar.setSubtitle("subtitle");
         toolbar.setNavigationIcon(R.mipmap.ic_launcher);

    }






    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

这里要注意,Activity要继承AppcompatActivity,这个是最新的api推荐的。以下是执行效果和属性说明。


Android 最新控件 Toolbar

这样就结束了