原文:http://blog.youkuaiyun.com/u011068702/article/details/50023741
之前写过小例子,发现菜单栏右上角的那3个点老是显示不出来,今天终于解决了,不废话,先爆照。
我之前的代码menu_main.xml 文件如下
- <menu xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- tools:context=".DemoActivity">
- <item android:id="@+id/action_material"
- android:title="Material"
- android:orderInCategory="100"
- app:showAsAction="never" />
- <item android:id="@+id/action_circles"
- android:title="Circles"
- android:orderInCategory="100"
- app:showAsAction="never" />
- <item android:id="@+id/action_water_drop"
- android:title="WaterDrop"
- android:orderInCategory="100"
- app:showAsAction="never" />
- <item android:id="@+id/action_ring"
- android:title="Ring"
- android:orderInCategory="100"
- app:showAsAction="never" />
- </menu>
- package com.example.chenyu.mpandroidcharttest;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.ViewConfiguration;
- import android.widget.Toast;
- import java.lang.reflect.Field;
- public class MainActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.menu_main, menu);
- return true;
- }
- @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();
- switch (id){
- case R.id.action_material:
- Toast.makeText(MainActivity.this, "1", Toast.LENGTH_SHORT).show();
- return true;
- case R.id.action_circles:
- Toast.makeText(MainActivity.this, "2", Toast.LENGTH_SHORT).show();
- return true;
- case R.id.action_water_drop:
- Toast.makeText(MainActivity.this, "3", Toast.LENGTH_SHORT).show();
- return true;
- case R.id.action_ring:
- Toast.makeText(MainActivity.this, "4", Toast.LENGTH_SHORT).show();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- }
我的手机是小米2s,然后到网上找了下,可能是手机问题,
在我的Oncreate(){}方法里面调用就可以了
- private void makeActionOverflowMenuShown() {
- //devices with hardware menu button (e.g. Samsung Note) don't show action overflow menu
- try {
- ViewConfiguration config = ViewConfiguration.get(this);
- Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
- if (menuKeyField != null) {
- menuKeyField.setAccessible(true);
- menuKeyField.setBoolean(config, false);
- }
- } catch (Exception e) {
- }
- }
所以我的MainActivity.java文件变成如下了
- package com.example.chenyu.mpandroidcharttest;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.ViewConfiguration;
- import android.widget.Toast;
- import java.lang.reflect.Field;
- public class MainActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- makeActionOverflowMenuShown();
- setContentView(R.layout.activity_main);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.menu_main, menu);
- return true;
- }
- @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();
- switch (id){
- case R.id.action_material:
- Toast.makeText(MainActivity.this, "1", Toast.LENGTH_SHORT).show();
- return true;
- case R.id.action_circles:
- Toast.makeText(MainActivity.this, "2", Toast.LENGTH_SHORT).show();
- return true;
- case R.id.action_water_drop:
- Toast.makeText(MainActivity.this, "3", Toast.LENGTH_SHORT).show();
- return true;
- case R.id.action_ring:
- Toast.makeText(MainActivity.this, "4", Toast.LENGTH_SHORT).show();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- private void makeActionOverflowMenuShown() {
- //devices with hardware menu button (e.g. Samsung Note) don't show action overflow menu
- try {
- ViewConfiguration config = ViewConfiguration.get(this);
- Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
- if (menuKeyField != null) {
- menuKeyField.setAccessible(true);
- menuKeyField.setBoolean(config, false);
- }
- } catch (Exception e) {
- }
- }
- }
好了,终于解决了,心里也愉快了点,然后我们可以根据需要改下样式,对了,在那个菜单文件里面要写成
- app:showAsAction="never"