menu学习
在参考书籍“第一行代码”中按照实例编写代码后是没有办法实现menu的,因为我用的是android6.0系统进行的调试,解决方法最直接的就是使用ToolBar来实现。(以下代码及实现方式均来自网络,如有侵权请告知删除)

首先需要将style文件进行修改,这样可以设定ToolBar的样式并隐藏标题栏:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="actionOverflowMenuStyle">@style/MenuStyle</item>
</style>
<style name="MenuStyle" parent="@style/Widget.AppCompat.Light.PopupMenu.Overflow">
<item name="android:dropDownVerticalOffset">?attr/actionBarSize</item>
</style>
</resources>
在activity_main.xml中加入toolbar
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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.wangk.toolbartest.MainActivity"> <android.support.v7.widget.Toolbar android:id="@+id/activity_main_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary"> </android.support.v7.widget.Toolbar> </RelativeLayout>
然后新建文件夹menu

然后新建main_menu.xml用来维护菜单内容
<?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_edit" android:title="action_edit" android:orderInCategory="80" android:icon="@drawable/ab_edit" app:showAsAction="always" /> <item android:id="@+id/action_share" android:title="action_edit" android:orderInCategory="90" android:icon="@drawable/ab_share" app:showAsAction="always" /> <item android:id="@+id/action_settings" android:title="action_settings" android:orderInCategory="100" app:showAsAction="never"/> <item android:id="@+id/action_settings1" android:title="action_settings1" android:orderInCategory="100" app:showAsAction="never"/> </menu>
在活动中导入activity_main,并添加菜单栏的响应
package com.example.wangk.toolbartest; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initActionBar(); } public void initActionBar() { Toolbar toolbar = (Toolbar) findViewById(R.id.activity_main_toolbar); //加载toolbar toolbar.setTitle("题目"); toolbar.setLogo(R.drawable.ab_android); toolbar.setSubtitle("副标题"); setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.back); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); toolbar.setOnMenuItemClickListener(onMenuItemClick); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_memu, menu); return true; } private Toolbar.OnMenuItemClickListener onMenuItemClick=new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { String msg = ""; switch (item.getItemId()) { case R.id.action_edit: msg += "Click edit"; break; case R.id.action_share: msg += "Click share"; break; case R.id.action_settings: msg += "Click setting"; break; case R.id.action_settings1: msg += "Click setting1"; break; } if (!msg.equals("")) { Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } return true; } }; }
实现效果


浙公网安备 33010602011771号