实现仿微信6.0界面上-actionbar实现界面的上半部分

  首先完成上方界面的制作。在这里我们用到了actionbar,而不是自定义view布局。主要步骤如下:

1.在menu中定义如下item

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  >

    <item
        android:id="@+id/action_search"
        android:actionViewClass="android.widget.SearchView"
        android:icon="@mipmap/actionbar_search_icon"
        android:showAsAction="ifRoom|collapseActionView"
        android:title="@string/action_search"/>
    <item
        android:id="@+id/action_group_chat"
        android:icon="@mipmap/menu_group_chat_icon"

        android:title="@string/menu_group_chat"/>
    <item
        android:id="@+id/action_add_friend"
        android:icon="@mipmap/menu_add_icon"

        android:title="@string/menu_addfriend"/>
    <item
        android:id="@+id/action_scan"
        android:icon="@mipmap/men_scan_icon"

        android:title="@string/menu_scan"/>
    <item
        android:id="@+id/action_feedback"
        android:icon="@mipmap/menu_feedback_icon"

        android:title="@string/menu_feedback"/>

</menu>

上述5个按钮分别对应查找,群聊,添加朋友,扫一扫和意见反馈。其中查找定义了android:showAsAction="ifRoom|collapseActionView",使得该按钮内嵌在actionbar中,定义了 android:actionViewClass="android.widget.SearchView",利用了android widget中已经定义好的searchView。按钮+是重新定义了android actionbar overFlowButton的样式,所以并没有在menu_main.xml中定义该按钮。

2.为了重新改变android overFlowButton的样式,需要在style.xml中做出如下更改:

<resources>

    <!-- Base application theme. -->
    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <item name="android:actionOverflowButtonStyle">@style/myFlow</item>
        <!-- Customize your theme here. -->
    </style>
    <style name="myFlow">
        <item name="android:src">@mipmap/actionbar_add_icon</item>
    </style>

</resources>

这样就定义了overflowButton的背景是actionbar_add_icon对应的图片。

3.但是有些情况下,overflowButton不会显示,为了强制显示该按钮,我们需要修改利用反射的方法,修改系统预定义的属性。为此,需要在activity中重写onMenuOpened方法,具体如下:

@Override
    public boolean onMenuOpened(int featureId, Menu menu) {
        // enable visible icons in action bar
        if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {
            if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
                try {
                    Field field = menu.getClass().
                            getDeclaredField("mOptionalIconsVisible");
                    field.setAccessible(true);
                    field.setBoolean(menu, true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return super.onMenuOpened(featureId, menu);
    }

通过设置变量mOptionalIconsVisible为true来保证overflowButton总是显示。

4.当然,不要忘记为activity重写onCreateOptionsMenu方法!否则就不会在activity中创建menu了!具体如下。

@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;
    }

有一个需要注意的地方,如果在项目中引用的是v7的包,那么查找对应的searchView无法内嵌在actionBar中,可能是因为v7的包中定义的searchView不同于v4。

end

时间: 2024-10-27 03:01:27

实现仿微信6.0界面上-actionbar实现界面的上半部分的相关文章

iOS手势 规避同一界面上不同子界面同时响应多个手势

最近在项目中遇到这样一个有关iOS手势的问题,首先需求描述如下:“在一个CollectionView中,要求长按不同的cell,产生一个cell的snapshot,此时可拖拽这个snapshot再进行后续的操作(如拖到view的某个位置出发一个事件)”.需求本身并不复杂,但要求每次只能有一个cell响应长按手势,不允许同时有两个或以上的cell响应长按手势. 我们知道UIGestureRecognizer有很多回调和方法可以兼容同一个View上的多种手势,网上相关的教程也很多,比如: http:

Android 高仿微信6.0主界面 带你玩转切换图标变色

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41087219,本文出自:[张鸿洋的博客] 1.概述 学习Android少不了模仿各种app的界面,自从微信6.0问世以后,就觉得微信切换时那个变色的Tab图标屌屌的,今天我就带大家自定义控件,带你变色变得飞起~~ 好了,下面先看下效果图: 清晰度不太好,大家凑合看~~有木有觉得这个颜色弱爆了了的,,,下面我动动手指给你换个颜色: 有没有这个颜色比较妖一点~~~好了~下面开始介绍

实现仿微信6.0界面下-自定义view实现可变色的按钮

1.概述 学习Android少不了模仿各种app的界面,自从微信6.0问世以后,就觉得微信切换时那个变色的Tab图标屌屌的,今天我就带大家自定义控件,带你变色变得飞起~~ 好了,下面先看下效果图: 清晰度不太好,大家凑合看~~有木有觉得这个颜色弱爆了了的,,,下面我动动手指给你换个颜色: 有没有这个颜色比较妖一点~~~好了~下面开始介绍原理. 2.原理介绍 通过上面的效果图,大家可能也猜到了,我们的图标并非是两张图片,而是一张图,并且目标颜色是可定制的,谁让现在动不动就谈个性化呢. 那么我们如何

仿微信6.0 UI界面

模仿微信6.0 ui界面,实现actionAar.搜索+菜单.自定义底部tab,实现滑动tab渐变效果. 下载地址:http://www.devstore.cn/code/info/810.html 运行截图:   

NET仿微信Oauth2.0

这个文章先说一说Oauth2.0的原理,再到应用场景,最后才是代码实现,这样才学会最终的思想,并在应用场景使用,所谓实践出真理. 1,Oauth2.0的原理 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版.在互联网,经常用到OAuth2.0无非有三种场景: 1.1对外完全开放,系统与系统的对接,例如淘宝开放平台. 1.2内部系统对内部系统,如:(api.xxxx.com是一个子系统,web.xxxx.com是另外一个业务线的子系统

高仿微信6.0底部切换标签设置Alpha渐变效果解析

本文参考:[张鸿洋的博客]http://blog.csdn.net/lmj623565791/article/details/41087219 先上关键的代码 <span style="color:#333333;">public class ChangeColorIconWithTextView extends View { private Bitmap mBitmap; private Canvas mCanvas; private Paint mPaint; /**

Android高仿微信头像裁剪

最近公司的APP很多用户反应无法上传头像,于是打算修改原来头像裁剪的代码.参考微信.QQ.唱吧头像裁剪的操作,决定就仿微信头像裁剪来上传用户头像,在Android大神鸿洋的一篇高仿微信头像的博客(博客地址结尾会贴出来)的基础上加了一些代码,加的代码主要增加如下的功能: 1.增加对大图的处理,缩放到我们裁剪框的大小. 2.裁剪后的图片保存到临时文件里,把临时文件的路径返回到需要处理的界面,因为在三星S4传byte数组返回数据时会闪退,传路径则正常. 3.对有些系统返回旋转过的图片进行处理. 这个功

Android ActionBar仿微信界面

ActionBar仿微信界面 1.学习了别人的两篇关于ActionBar博客,在结合别人的文章来仿造一下微信的界面: 思路如下:1).利用ActionBar生成界面的头部,在用ActionBar的ActionProvider时候要注意引入的包一定是android.view.ActionProvider,不能是android.support.v4.view.ActionProvider 2),切换的Title可以参考之前之前一篇文章利用RadioGroup来做,这里是利用一个开源的项目PagerS

Android ActionBar应用实战,高仿微信主界面的设计

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对较为深刻的理解了.唯一欠缺的是,前面我们都只是学习了理论知识而已,虽然知识点已经掌握了,但是真正投入到项目实战当中时会不会掉链子还很难说.那么不用担心,本篇文章我就将带领大家一起进入ActionBar的应用实战,将理论和实践完美结合到一起. 如果你还没有看过我的前两篇文章,建议先去阅读一下 Andr