android:orientation="vertical"(AndroidStudio不提示,这个要记住了)
昨天好不容易把ActionBar从溢出菜单overflow中弄出来了,,,,,现在为菜单注册事件
参考代码:https://www.aliyun.com/jiaocheng/71385.html
参考别人代码,这段算是写了,遇到了不少麻烦
2.启用程序图标导航
actionBar.setDisplayHomeAsUpEnabled(true);---显示向左的箭头
actionBar.setDisplayShowHomeEnabled(false);--设置
actionBar.setHomeButtonEnabled(true);--设置应用程序图标变成可点击的按钮
通过android.R.id.home能识别这个箭头按钮
下面是全部的代码:后台代码 布局简单 资源文件 菜单
1 <?xml version="1.0" encoding="utf-8"?> 2 <menu xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 > 5 <!--<item android:title="first"--> 6 <!--android:icon="@mipmap/ic_launcher_round"--> 7 <!--app:showAsAction="ifRoom"--> 8 <!--android:id="@+id/action_test">--> 9 <!--<menu>--> 10 <!--<group android:checkableBehavior="single">--> 11 <!--<item android:id="@+id/d"--> 12 <!--android:title="@string/test1"></item>--> 13 <!--<item android:id="@+id/f"--> 14 <!--android:title="@string/test1"></item>--> 15 <!--</group>--> 16 <!--</menu>--> 17 <!--</item>--> 18 <!--<item app:showAsAction="ifRoom|always"--> 19 <!--android:title="dfsdfsd">--> 20 21 22 <!--</item>--> 23 <item android:id="@+id/action1" android:title="@string/font_size" app:showAsAction="always|withText" android:icon="@mipmap/ic_launcher_round"> 24 <menu> <!-- 定义一组单选菜单项--> 25 <group android:checkableBehavior="single"> <!-- 定义多个菜单项--> 26 <item android:id="@+id/font_10" android:title="@string/font_10" /> 27 <item android:id="@+id/font_12" android:title="@string/font_12" /> 28 <item android:id="@+id/font_14" android:title="@string/font_14" /> 29 <item android:id="@+id/font_16" android:title="@string/font_16" /> 30 <item android:id="@+id/font_18" android:title="@string/font_18" /> 31 </group> 32 </menu> 33 </item> <!-- 定义一个普通菜单项--> 34 <item android:id="@+id/action2" app:showAsAction="never" android:title="@string/plain_item"> 35 </item> 36 37 <item android:id="@+id/action3" android:title="@string/font_color" app:showAsAction="never" android:icon="@mipmap/ic_launcher_round"> 38 <menu> <!-- 定义一个允许复选的菜单项--> 39 <group> <!-- 定义三个菜单项--> 40 <item android:id="@+id/red_font" android:title="@string/red_title" /> 41 <item android:id="@+id/blue_font" android:title="@string/blue_title" /> 42 <item android:id="@+id/green_font" android:title="@string/green_title" /> 43 </group> 44 </menu> 45 </item> 46 </menu>
1 package com.example.administrator.actionbar; 2 3 import android.annotation.SuppressLint; 4 import android.content.pm.ActivityInfo; 5 import android.graphics.Color; 6 import android.support.v4.view.MenuItemCompat; 7 import android.support.v7.app.ActionBar; 8 import android.support.v7.app.AppCompatActivity; 9 import android.os.Bundle; 10 import android.util.Log; 11 import android.view.Menu; 12 import android.view.MenuInflater; 13 import android.view.MenuItem; 14 import android.view.View; 15 import android.widget.TextView; 16 import android.widget.Toast; 17 18 public class MainActivity extends AppCompatActivity { 19 20 ActionBar actionBar; 21 TextView textView; 22 @Override 23 protected void onCreate(Bundle savedInstanceState) { 24 super.onCreate(savedInstanceState); 25 //设置横屏 26 //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 27 setContentView(R.layout.activity_main); 28 actionBar = getSupportActionBar(); 29 Log.v("z",getSupportActionBar()+""); 30 actionBar.setDisplayShowHomeEnabled(false); 31 actionBar.setHomeButtonEnabled(true); 32 actionBar.setDisplayHomeAsUpEnabled(true); 33 textView = (TextView)findViewById(R.id.tv_txt); 34 registerForContextMenu(textView); 35 36 37 } 38 39 /** * 加载菜单 * * @param menu * @return */ 40 @Override public boolean onCreateOptionsMenu(Menu menu) 41 { 42 MenuInflater inflater = new MenuInflater(this); //装填R.menu.my_menu对应的菜单,并添加到menu中 43 inflater.inflate(R.menu.actionbar, menu); 44 //重要代码,使菜单不在overflow中显示 45 MenuItemCompat.setShowAsAction(menu.findItem(R.id.action1),MenuItemCompat.SHOW_AS_ACTION_ALWAYS); 46 MenuItemCompat.setShowAsAction(menu.findItem(R.id.action2),MenuItemCompat.SHOW_AS_ACTION_ALWAYS); 47 MenuItemCompat.setShowAsAction(menu.findItem(R.id.action3),MenuItemCompat.SHOW_AS_ACTION_ALWAYS); 48 return super.onCreateOptionsMenu(menu); 49 } 50 51 52 @Override 53 public boolean onOptionsItemSelected(MenuItem item) { 54 if(item.isCheckable()) 55 { 56 item.setChecked(true); 57 } 58 switch (item.getItemId()){ 59 case R.id.font_10: 60 textView.setTextSize(10*2); 61 case R.id.font_12: 62 textView.setTextSize(12 * 2); 63 item.setChecked(true); 64 break; 65 case R.id.font_14: 66 textView.setTextSize(14 * 2); 67 item.setChecked(true); 68 break; 69 case R.id.font_16: 70 textView.setTextSize(16 * 2); 71 item.setChecked(true); 72 break; 73 case R.id.font_18: 74 textView.setTextSize(18 * 2); 75 item.setChecked(true); 76 break; 77 case R.id.red_font: 78 textView.setTextColor(Color.RED); 79 item.setChecked(true); 80 break; 81 case R.id.blue_font: 82 textView.setTextColor(Color.BLUE); 83 item.setChecked(true); 84 break; 85 case R.id.action2: 86 Toast.makeText(this,"普通菜单",Toast.LENGTH_SHORT).show(); 87 break; 88 case android.R.id.home: 89 Toast.makeText(this,"jiantoubeidianjil",Toast.LENGTH_SHORT).show(); 90 break; 91 } 92 93 94 95 return super.onOptionsItemSelected(item); 96 } 97 /** * 上下文菜单中菜单项被单击时触发该方法 * * @param item * @return */ 98 @Override 99 public boolean onContextItemSelected(MenuItem item) 100 { //勾选该菜单项 101 item.setChecked(true); 102 switch (item.getItemId()) 103 { 104 case R.id.red: 105 item.setChecked(true); 106 textView.setBackgroundColor(Color.RED); 107 break; 108 case R.id.green: 109 item.setChecked(true); 110 textView.setBackgroundColor(Color.GREEN); 111 break; 112 case R.id.blue: 113 item.setChecked(true); 114 textView.setBackgroundColor(Color.BLUE); 115 break; 116 } 117 return true; 118 } 119 120 // @SuppressLint("NewApi") 121 // @Override 122 // protected void onStart() { 123 // 124 // super.onStart(); 125 // //获取Actionbar 126 // 127 // actionBar.setDisplayHomeAsUpEnabled(true); 128 // } 129 // @SuppressLint("NewApi") 130 // @Override 131 // public boolean onCreateOptionsMenu(Menu menu) { 132 // //资源文件添加菜单 133 // new MenuInflater(this).inflate(R.menu.actionbar, menu); 134 // //代码添加菜单 135 // MenuItem item=menu.add("分享(动态添加)"); 136 // item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | 137 // MenuItem.SHOW_AS_ACTION_WITH_TEXT); 138 // item.setIcon(android.R.drawable.ic_menu_share); 139 // 140 // 141 // 142 // return super.onCreateOptionsMenu(menu); 143 // } 144 public void hideActionBar(View view) 145 { 146 actionBar.hide(); 147 } 148 public void showActionBar(View view) 149 { 150 actionBar.show(); 151 } 152 }