Android之如何解决右上角不显示3个点的菜单
16lz
2021-01-26
之前写过小例子,发现菜单栏右上角的那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>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); 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"不要写成android:showAsAction="never" 记住
更多相关文章
- 安卓按钮有按下去的效果的实现方法
- Android多渠道打包修改资源文件
- Android(安卓)Studio JNI
- attrs.xml文件中属性类型format值的格式
- Android(安卓)Contacts(二)—— SMS 短信 与 Contacts 联系人关联
- Android之AppWidgetProvider
- Android之AVD安装APK
- android media service
- Android应用程序的国际化与本地化