android smartbar适配

1.使用魅族的demo里的SmartBarUtils.java

2.在mainifest中的Application

 android:theme="@android:style/Theme.DeviceDefault.Light"

 android:uiOptions="splitActionBarWhenNarrow" 

3.在基类的activity中:

//代表隐藏头部bar

SmartBarUtils.setActionBarViewCollapsable(getActionBar(), true);

getActionBar().setDisplayOptions(0);

4.在业务的fragment中:

必须先调用下面的代码,才能是fragment里的menu生效

setHasOptionsMenu(true);

@Override

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

inflater.inflate(R.menu.home_menu, menu);

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.menu_home_page:

new AlertDialog.Builder(mAct).setTitle("Action Menu Item")

.setPositiveButton("Yes", null).setNegativeButton("Cancel", null).show();

break;

default:

break;

}

return super.onOptionsItemSelected(item);

}

魅族的反射工具类:

public class SmartBarUtils {

 public static void setActionBarTabsShowAtBottom(ActionBar actionbar, boolean showAtBottom) {

 try {

 Method method = Class.forName("android.app.ActionBar").getMethod(

 "setTabsShowAtBottom", new Class[] { boolean.class });

 try {

 method.invoke(actionbar, showAtBottom);

 } catch (IllegalArgumentException e) {

 e.printStackTrace();

 } catch (IllegalAccessException e) {

 e.printStackTrace();

 } catch (InvocationTargetException e) {

 e.printStackTrace();

 }

 } catch (SecurityException e) {

 e.printStackTrace();

 } catch (NoSuchMethodException e) {

 e.printStackTrace();

 } catch (ClassNotFoundException e) {

 e.printStackTrace();

 }

 }

 public static void setActionBarViewCollapsable(ActionBar actionbar, boolean collapsable) {

 try {

 Method method = Class.forName("android.app.ActionBar").getMethod(

 "setActionBarViewCollapsable", new Class[] { boolean.class });

 try {

 method.invoke(actionbar, collapsable);

 } catch (IllegalArgumentException e) {

 e.printStackTrace();

 } catch (IllegalAccessException e) {

 e.printStackTrace();

 } catch (InvocationTargetException e) {

 e.printStackTrace();

 }

 } catch (SecurityException e) {

 e.printStackTrace();

 } catch (NoSuchMethodException e) {

 e.printStackTrace();

 } catch (ClassNotFoundException e) {

 e.printStackTrace();

 }

 }

 public static void setActionModeHeaderHidden(ActionBar actionbar, boolean hidden) {

 try {

 Method method = Class.forName("android.app.ActionBar").getMethod(

 "setActionModeHeaderHidden", new Class[] { boolean.class });

 try {

 method.invoke(actionbar, hidden);

 } catch (IllegalArgumentException e) {

 e.printStackTrace();

 } catch (IllegalAccessException e) {

 e.printStackTrace();

 } catch (InvocationTargetException e) {

 e.printStackTrace();

 }

 } catch (SecurityException e) {

 e.printStackTrace();

 } catch (NoSuchMethodException e) {

 e.printStackTrace();

 } catch (ClassNotFoundException e) {

 e.printStackTrace();

 }

 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王硕

原 PostgreSQL源码中的List和ListCell的说明

46480
来自专栏数据之美

简化你的 java 字符串操作:Guava 之 CharMatcher 用法简介

对字符串的处理应该是编程活动中最频繁的操作了,而原生的 JDK 以及 Java 本身的语法特性使得在 Java 中进行字符串操作是一件极其麻烦的事情,如果你熟...

34680
来自专栏积累沉淀

Java枚举类型的原理

package com.lxq.enumm;   public enum Color   {       RED{   public String ...

45380
来自专栏逆向技术

C++反汇编第五讲,认识多重继承,菱形继承的内存结构,以及反汇编中的表现形式.

      C++反汇编第五讲,认识多重继承,菱形继承的内存结构,以及反汇编中的表现形式. 目录:   1.多重继承在内存中的表现形式     多重继承在汇编中...

20970
来自专栏菩提树下的杨过

objective-C 的OOP(上)--类定义、继承及方法调用

上一篇展示了如何用传统的“面向过程编程方法”,实现画“矩形”、“圆”、“椭圆”,这一篇看下如何改用OOP的方法来实现: ? 因为要用到“颜色”以及“矩形区域”二...

18380
来自专栏Ryan Miao

java中复制对象通过反射或序列化

在使用缓存读取数据后修改发现缓存被修改。于是找了下复制对象的方法。 关于对象克隆 ---- 按我的理解,对象是包含引用+数据。通常变量复制都是将引用传递过去。比...

33790
来自专栏项勇

笔记75 | Java字节、十进制、十六进制、字符串之间的相互转换

28430
来自专栏我的博客

Java基础语法

Java两种循环 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();...

29440
来自专栏互联网杂技

聊聊ES7与ES8特性

ES7只有2个特性: includes() 指数操作符 ES8尚未发布(2017年1月),下面是它已经完成起草的一些特性: Object.values() O...

34990
来自专栏一个会写诗的程序员的博客

第11章 运算符重载与约定第11章 运算符重载与约定

我们在《第2章 Kotlin 语法基础》中已经学习过关于运算符的相关内容,本章将继续深入探讨Kotlin中的运算符的重载与约定。

15640

扫码关注云+社区

领取腾讯云代金券