Android-在动作栏中增加“查询”视图

来源:互联网 发布:垃圾分类网络知识竞赛 编辑:程序博客网 时间:2024/04/29 00:40

运行APP程序,由于当前模拟器屏幕比较小,部分动作项没有显示,单击键盘上的”MENU”按钮,会出现菜单栏。单击表示查询的放大镜图标,输入查询关键词,按回车键会显示字样:查询:…

Action View(动作视图)是出现在动作栏中,代替动作项按钮的小工具。可以在工作栏中增加”查询”动作项。增加动作视图时,只需要设置项的actionViewClass属性即可。actionViewClass属性用来为动作栏指定一个视图类。本例中,为动作项的actionViewClass属性指定了系统自带的android.widget.SearchView控件:android:actionViewClass=”android.widget.SearchView”

实现过程:
1.修改/res/layout/包中的main_activity.xml文件,设置背景图片

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:background="@drawable/jay1" ></LinearLayout>

2.在/res/menu文件夹中新建actions.xml文件,增加4个菜单项,为第一个菜单项设置actionViewClass属性为”android.widget.SearchView”,其他的不设置。

<menu xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" >  <item        android:id="@+id/action_settings"        android:orderInCategory="100"        android:showAsAction="never"        android:title="@string/action_settings"/></menu>

3.新建ActionViewActivity类,继承Activity类。在onCreate()方法中应用布局文件。在onCreateOptionsMenu()方法中,获得SearchView,然后处理查询事件。在onOptionsItemSelected()方法中,处理菜单项选择事件。

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        MenuInflater flater=getMenuInflater();        flater.inflate(R.menu.actions, menu);        SearchView searchView=(SearchView)menu.findItem(R.id.search_action).getActionView();        searchView.setOnQueryTextListener(new OnQueryTextListener() {            @Override            public boolean onQueryTextSubmit(String query) {                // TODO Auto-generated method stub                Toast.makeText(MainActivity.this, "查询:"+query, Toast.LENGTH_LONG).show();                return true;            }            @Override            public boolean onQueryTextChange(String newText) {                // TODO Auto-generated method stub                return true;            }        });        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        Toast.makeText(MainActivity.this, "选择"+item.getTitle(), Toast.LENGTH_SHORT).show();        return true;    }}
0 0
原创粉丝点击