Android界面编程--使用活动条(ActionBar)--通过ActionBar菜单改变TextView的字体和颜色

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 }
原文地址:https://www.cnblogs.com/xiaochenztx/p/8512512.html