Android笔记:ToolBar和SearchView使用

ToolBar使用方式:
注:ToolBar的使用必须继承AppCompatActivity,不能直接是继承Activity。而Fragment中使用Toolbar,则使用((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);这个方法加载。如果承载的activity中有menu,而fragment中又有自己发menu,那么需要在((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
之前加上setHasOptionsMenu(true);即可。

首先在styles.xml中


<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        -- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary
        "colorPrimaryDark">@color/colorPrimaryDark
        "colorAccent">@color/colorAccent
    style>

布局文件 activity_main.xml
xmlns:app=”http://schemas.android.com/apk/res-auto”
经常使用自定义控件的比较清楚这个的作用,有些直接使用不起作用,这时候就需要使用这个属性。
比如直接使用android:contentInsetStart=”0dp”会发现没有效果,这时候就需要改成app:contentInsetStart=”0dp”。

有时候自定义toolbar时前面会有一段空白间距,需要通过contentInsetStart属性去除这个间距。

.support.v7.widget.Toolbar
        android:id="@+id/tools_bar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        app:contentInsetStart="0dp"
        android:background="@color/colorPrimary"
        >
        "@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:layout_gravity="center"
            android:text="title"
            />
    .support.v7.widget.Toolbar>

代码中 MainActivity.java

//得到toolbar对象
Toolbar toolbar = (Toolbar) findViewById(R.id.tools_bar);
//将toolbar原生title设为空
toolbar.setTitle("");
//将toolbar对象加入到actionbar中
setSupportActionBar(toolbar);
//得到toolbar中自定义控件,并进行处理
TextView title = (TextView) findViewById(R.id.text);
title.setText("标题");

SearchView使用方式:
在res下的menu文件夹下创建一个menu.xml文件。(没有menu文件夹可以自己在res下新建一个)
menu.xml文件内容:


<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_search"
          android:title="搜索"
          app:showAsAction="always"
          app:actionViewClass="android.widget.SearchView" />
menu>

代码中 MainActivity.java
重写onCreateOptionsMenu方法。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //加载menu布局
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        //得到SearchView对象,SearchView一些属性可以直接使用,比如:setSubmitButtonEnabled,setQueryHint等
        SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
        searchView.setQueryHint("搜索");
        //如果想单独对SearchView定制,比如需要更换搜索图标等,可以通过一下代码实现。
        if(searchView != null) {
            //"android:id/search_plate"这个值得到方式:通过跟踪SearchView源码,找到其布局对应的id
            //这边修改的是点击搜索图标后展开界面的背景色,也可以根据不同的id修改对应的控件
            int id = searchView.getContext().getResources().getIdentifier(
                    "android:id/search_plate", null, null);
            LinearLayout layout = (LinearLayout) searchView.findViewById(id);
            layout.setBackgroundColor(Color.WHITE);
        }
        return super.onCreateOptionsMenu(menu);
    }

效果图:
Android笔记:ToolBar和SearchView使用_第1张图片

Android笔记:ToolBar和SearchView使用_第2张图片

demo:
demo下载地址

你可能感兴趣的:(android)