Actionbar以及Seachview设计

来源:互联网 发布:医疗软件开发 名单 编辑:程序博客网 时间:2024/06/06 06:34

最近在做一个项目,需要用到搜索功能,界面要设计成这样:

要用到Actionbar,actionbar是android3.0(API11)才可以

第三方开源的actionbarsherlock支持使得Android 2.1以上。一般现在都是基于3.0的。actionbar可以通过res/menu文件添加按钮选项。你打开

res/menu

可以看到文件格式,按格式添加即可。


有注意的地方其中有一个属性是showAsAction选值可以使:

   1、 always:

  2、ifRoom:
  3、never:
  4、withText:
    5、collapseActionView 注意这个可以把图标展开。这点可能都知道。但是展开后会有一个箭头如下:


 


我的需求是不要箭头如下图:


那怎么办?
一、先说一下seachview。
网上有很多在actionbar添加搜索框的,按上面的可是就是出不来效果:有几点注意的:
1、版本。
2、主题
3、api的引入
基于版本2.1的theme可以用theme.appcompant及他的延伸版如@style/theme.appcompant.light和theme.appcompant.light.darkactionbar。根据自己定。基于版本3.0的可以选则@android:style/theme.holo以及他的延伸版。

注意:如果用activity引入@android:style/theme.holo,如果是actionbaractivity的话就引入@style/theme.appcompant.light。自己理解。

我选择的是theme.appcompant
在res/menu中添加:app:actionViewClass="android.widget.SearchView"这句话,
注意:app:actionViewClass="android.widget.SearchView"android:actionViewClass="android.widget.SearchView"或者android:actionViewClass="android.support.v7.widget.SearchView"
这里的seachview要和java代码中的seachview引入的包一致:

下面代码中的seachview。
用android的实验不成功,要用app这里不是绝对的,看看你的空间名:
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"是app,

也可以使其他,我看网上又说用holo和其他的我试了一下也可以。前提就是 xmlns:xxx="http://schemas.android.com/apk/res-auto"要一样。
要不然出不来结果。
二、就是在actionbaractivity中添加代码,这里只实现视图,搜索功能展示,网上有。
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.index, menu);
        MenuItem item = menu.findItem(R.id.action_search);
        SearchView view = (SearchView)item.getActionView();//seachview要一致,否则报错。
        item.expandActionView();
        view.setIconified(true);

        return true;
    }

其中说一下expandActionViewsetIconified:

expandActionView
expandActionView
是可以把图标展开但是这里和collapseActionView有区别,前面是不加箭头的,那么你就可以不再layout中申明用collapseActionView了,而在代码中用expandActionView,他的版本要求是API 14就是android4.0有点高

setIconified:图标化就是以图标的形式展示,值true就是一个图标,false就是展开的如图:
  
expandActionViewexpandActionViewexpandActionViewexpandActionViewexpandActionViewexpandActionView


                            true                                                                                                                                                               false

 item.expandActionView()这句可以省略

也可以为search设置背景:

通过代码view.setBackgroundResource(android.R.drawable.editbox_background)或者view.setBackgroundDrawable

也可以设置颜色:

view.setBackgroundcolor。
 网上有很多资源:

我用的说一下:

系统图标展示图:http://blog.csdn.net/jishu360/article/details/8540026

中文api:http://www.android-doc.com/

一个很好的开源项目网很好:https://github.com/Trinea/android-open-project

android资源库很好的:http://www.androiddevtools.cn/


0 0
原创粉丝点击