Android中Toolbar的实现

来源:互联网 发布:云房数据研究中心 编辑:程序博客网 时间:2024/05/14 01:57

实现:
① 溢出菜单显示在右上角
②操作栏button icon的实现
③溢出菜单里显示icon
④返回到父级(向上箭头的实现)
⑤更换溢出按钮的图标(...变+)

①app
②v7
③onPrepareOptionsPanel
package com.syz.lianxi;

import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;

import java.lang.reflect.Method;

/**
* Created by 永贞 on 2016/8/7.
*/
public class MenuDemo extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menudemo);

//设置显示Toolbar 让菜单显示在顶部
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);

//父布局 自动在操作栏添加返回到父Activity的箭头并实现其功能
ActionBar ab=getSupportActionBar();
ab.setDisplayHomeAsUpEnabled(true);

}

/**
* 创建填充菜单(显示出来)
* @param menu
* @return
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.menudemo,menu);/*填充菜单*/

return true;
}


/**
* 让溢出菜单里的图标icon显示出来*/
@Override
protected boolean onPrepareOptionsPanel(View view, Menu menu) {
if (menu != null) {
if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
try {
Method m = menu.getClass().getDeclaredMethod(
"setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e) {
Log.e(getClass().getSimpleName(), "onMenuOpened...unable to set icons for overflow menu", e);
}
}
}
return super.onPrepareOptionsPanel(view, menu);
}


/**
* 实现菜单的点击事件*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.action_favorite:

return true;
case R.id.action_settings:

return true;
default:

return super.onOptionsItemSelected(item);
}

}
}
<?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_favorite"
android:icon="@drawable/ic_action_star"
android:title="收藏">
</item>

<item
android:id="@+id/action_settings"
android:title="帮助"
android:icon="@drawable/ic_action_help"
app:showAsAction="never">
</item>

<item
android:id="@+id/action_search"
android:title="搜索"
android:icon="@drawable/ic_action_search"
app:showAsAction="ifRoom|collapseActionView"
app:actionViewClass="android.support.v7.widget.SearchView">
</item>

<item
android:id="@+id/action_share"
android:title="分享"
android:icon="@drawable/ic_action_share"
app:showAsAction="ifRoom"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>

</menu>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="48dp"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
android:popupTheme="@style/Theme.AppCompat.Light"/>
</LinearLayout>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme.NoActionBar"><!--为使用Toolbar-->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".MenuDemo"
android:parentActivityName=".MainActivity">
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/><!--回退到父activity-->
</activity>
</application>
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:actionOverflowButtonStyle">@style/menu_add</item><!--更换溢出菜单的图标-->

</style>
<style name="menu_add">
<item name="android:src">@drawable/ic_action_add</item>
</style>















0 0
原创粉丝点击