Android(安卓)ActionBar以及menu的代码设置样式
16lz
2021-01-25
menu部分xml代码
1 <?xml version="1.0" encoding="utf-8"?> 2 <menu xmlns:android="http://schemas.android.com/apk/res/android" > 3 4 <item android:id="@+id/action_search" 5 android:title="搜索1" 6 android:orderInCategory="100" 7 android:showAsAction="always"/> 8 9 <item android:id="@+id/action_search2"10 android:actionViewClass="android.widget.SearchView"11 android:showAsAction="ifRoom|collapseActionView"12 android:orderInCategory="100"13 android:title="搜索2"/>14 15 16 <item android:id="@+id/action_share"17 android:title="分享"18 android:orderInCategory="100"19 android:icon="@drawable/ic_action_favor_normal"20 android:showAsAction="never"/>21 <item android:id="@+id/action_collection"22 android:title="收藏"23 android:orderInCategory="100"24 android:showAsAction="never"/>25 <item android:id="@+id/action_font"26 android:title="字体大小"27 android:orderInCategory="100"28 android:showAsAction="never"/>29 </menu>
Menu中overflower菜单图标显示实现【重写onMenuOpened方法,使用反射原理】
1 /** 2 * 显示overflower菜单图标 3 */ 4 @Override 5 public boolean onMenuOpened(int featureId, Menu menu) { 6 if (featureId == Window.FEATURE_ACTION_BAR && menu != null) { 7 if (menu.getClass().getSimpleName().equals("MenuBuilder")) { 8 try { 9 Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE); 10 m.setAccessible(true); 11 m.invoke(menu, true); 12 } catch (Exception e) { 13 } 14 } 15 } 16 return super.onMenuOpened(featureId, menu); 17 }
针对Menu菜单中选项的事件监听操作
1 /** 2 * menu菜单点击操作的监听事件 3 */ 4 @Override 5 public boolean onOptionsItemSelected(MenuItem item) { 6 switch(item.getItemId()){ 7 case android.R.id.home: 8 //finish(); 9 super.onBackPressed();10 break;11 case R.id.action_add:12 Toast.makeText(this, "添加", Toast.LENGTH_SHORT).show();13 break;14 }15 return super.onOptionsItemSelected(item);16 }
自定义ActionBar
1 /** 2 * 初始化 ActionBar内容 3 * */ 4 private ActionBar actionBar; 5 private void initActionBar(){ 6 actionBar=super.getActionBar(); 7 actionBar.show(); 8 9 //显示Home区域10 actionBar.setDisplayShowHomeEnabled(true);11 //设置home区域回退按钮12 actionBar.setDisplayHomeAsUpEnabled(true);13 actionBar.setHomeAsUpIndicator(R.drawable.back_move_details_normal);14 15 //不显示Home区域标题16 actionBar.setDisplayShowTitleEnabled(true);//17 actionBar.setTitle("新闻");//设置title18 //不显示Logo图片19 actionBar.setDisplayUseLogoEnabled(false);// 20 //去除home区域的Icon图标【将icon颜色设置为透明】21 Drawable colorDrawable=new 22 ColorDrawable(android.R.color.transparent);23 actionBar.setIcon(colorDrawable);24 25 //自定义区域26 actionBar.setDisplayShowCustomEnabled(true);27 TextView tvTitle=new TextView(this);//this,当前承载的28 tvTitle.setText("新闻信息");//tvTitle.setId();29 tvTitle.setTextSize(25);30 int colorVal=getResources().getColor(R.color.white);31 tvTitle.setTextColor(colorVal);//tvTitle.setTextColor(Color.WHITE);32 tvTitle.setGravity(Gravity.CENTER);33 34 LayoutParams layoutParams=35 new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 36 actionBar.setCustomView(tvTitle,layoutParams);37 38 }
实现效果:
更多相关文章
- 阅读《Android(安卓)从入门到精通》(27)——选项菜单
- Android官方文档翻译 十 2.3Styling the Action Bar
- Multiple markers at this line - The type java.lang.Object ca
- android添加快捷方式
- Android弹出菜单的灵活运用(自定义AlertDialog)
- Android内存泄漏排查利器LeakCanary
- Android-- 抽屉式公告
- android 5.0以上通知栏、状态栏图标变成白色
- Android(安卓)中的menu以及自定义menu