本篇讲的是如何用searchView实现搜索框,其实原理和之前的没啥差别,也算是个复习吧。

一、Manifest.xml

这里我用一个activity进行信息的输入和展示,配置方式还是老样子,写一个输入框的配置文件,然后写定一个action

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.kale.searchview"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6.  
  7. <uses-permission android:name="android.permission.READ_CONTACTS"/>
  8.  
  9. <uses-sdk
  10. android:minSdkVersion="11"
  11. android:targetSdkVersion="18" />
  12.  
  13. <application
  14. android:allowBackup="true"
  15. android:icon="@drawable/ic_launcher"
  16. android:label="@string/app_name"
  17. android:theme="@style/AppTheme" >
  18. <activity
  19. android:name=".MainActivity"
  20. android:label="@string/app_name"
  21. android:windowSoftInputMode = "adjustPan">
  22. <intent-filter>
  23. <action android:name="android.intent.action.MAIN" />
  24.  
  25. <category android:name="android.intent.category.LAUNCHER" />
  26. </intent-filter>
  27. <intent-filter>
  28. <action android:name="android.intent.action.SEARCH" />
  29. </intent-filter>
  30.  
  31. <meta-data
  32. android:name="android.app.searchable"
  33. android:resource="@xml/searchable" />
  34. </activity>
  35. </application>
  36.  
  37. </manifest>

二、searchable.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- 配置搜索模式 -->
  3. <searchable xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:label="@string/app_name"
  5. android:hint="@string/search_hint"
  6. android:icon="@drawable/ic_launcher"
  7. android:searchMode="queryRewriteFromText" />

三、MainActivity

3.1 设置SearchView

贴代码之前先说下searchview的设置,searchview有很多设置方案,详细可以参考官方的文档,下面是我举得几个例子:

  1. mSearchView = (SearchView) findViewById(R.id.search);
  2. /**
  3. * 默认情况下, search widget是"iconified“的,只是用一个图标 来表示它(一个放大镜),
  4. * 当用户按下它的时候才显示search box . 你可以调用setIconifiedByDefault(false)让search
  5. * box默认都被显示。 你也可以调用setIconified()让它以iconified“的形式显示。
  6. */
  7. mSearchView.setIconifiedByDefault(true);
  8. /**
  9. * 默认情况下是没提交搜索的按钮,所以用户必须在键盘上按下"enter"键来提交搜索.你可以同过setSubmitButtonEnabled(
  10. * true)来添加一个提交按钮("submit" button)
  11. * 设置true后,右边会出现一个箭头按钮。如果用户没有输入,就不会触发提交(submit)事件
  12. */
  13. mSearchView.setSubmitButtonEnabled(true);
  14. /**
  15. * 初始是否已经是展开的状态
  16. * 写上此句后searchView初始展开的,也就是是可以点击输入的状态,如果不写,那么就需要点击下放大镜,才能展开出现输入框
  17. */
  18. mSearchView.onActionViewExpanded();
  19. // 设置search view的背景色
  20. mSearchView.setBackgroundColor(0x22ff00ff);
  21. /**
  22. * 默认情况下, search widget是"iconified“的,只是用一个图标 来表示它(一个放大镜),
  23. * 当用户按下它的时候才显示search box . 你可以调用setIconifiedByDefault(false)让search
  24. * box默认都被显示。 你也可以调用setIconified()让它以iconified“的形式显示。
  25. */
  26. mSearchView.setIconifiedByDefault(true);

3.2 配置监听器

这段代码之前见过,监听器中的方法会在用户输入和提交搜索结果时触发

  1. mSearchView.setOnQueryTextListener(new OnQueryTextListener() {
  2.  
  3. private String TAG = getClass().getSimpleName();
  4.  
  5. /*
  6. * 在输入时触发的方法,当字符真正显示到searchView中才触发,像是拼音,在舒服法组词的时候不会触发
  7. *
  8. * @param queryText
  9. *
  10. * @return false if the SearchView should perform the default action
  11. * of showing any suggestions if available, true if the action was
  12. * handled by the listener.
  13. */
  14. @Override
  15. public boolean onQueryTextChange(String queryText) {
  16. Log.d(TAG, "onQueryTextChange = " + queryText);
  17.  
  18. String selection = RawContacts.DISPLAY_NAME_PRIMARY + " LIKE '%" + queryText + "%' " + " OR "
  19. + RawContacts.SORT_KEY_PRIMARY + " LIKE '%" + queryText + "%' ";
  20. // String[] selectionArg = { queryText };
  21. mCursor = getContentResolver().query(RawContacts.CONTENT_URI, PROJECTION, selection, null, null);
  22. mAdapter.swapCursor(mCursor); // 交换指针,展示新的数据
  23. return true;
  24. }
  25.  
  26. /*
  27. * 输入完成后,提交时触发的方法,一般情况是点击输入法中的搜索按钮才会触发。表示现在正式提交了
  28. *
  29. * @param queryText
  30. *
  31. * @return true to indicate that it has handled the submit request.
  32. * Otherwise return false to let the SearchView handle the
  33. * submission by launching any associated intent.
  34. */
  35. @Override
  36. public boolean onQueryTextSubmit(String queryText) {
  37. Log.d(TAG, "onQueryTextSubmit = " + queryText);
  38.  
  39. if (mSearchView != null) {
  40. // 得到输入管理对象
  41. InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
  42. if (imm != null) {
  43. // 这将让键盘在所有的情况下都被隐藏,但是一般我们在点击搜索按钮后,输入法都会乖乖的自动隐藏的。
  44. imm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0); // 输入法如果是显示状态,那么就隐藏输入法
  45. }
  46. mSearchView.clearFocus(); // 不获取焦点
  47. }
  48. return true;
  49. }
  50. });

3.3 全部代码

  1. package com.kale.searchview;
  2.  
  3. import android.app.SearchManager;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.database.Cursor;
  7. import android.os.Bundle;
  8. import android.provider.ContactsContract;
  9. import android.provider.ContactsContract.RawContacts;
  10. import android.support.v7.app.ActionBarActivity;
  11. import android.util.Log;
  12. import android.view.inputmethod.InputMethodManager;
  13. import android.widget.AbsListView;
  14. import android.widget.AbsListView.OnScrollListener;
  15. import android.widget.ListView;
  16. import android.widget.SearchView;
  17. import android.widget.SearchView.OnQueryTextListener;
  18. import android.widget.SimpleCursorAdapter;
  19.  
  20. public class MainActivity extends ActionBarActivity {
  21.  
  22. private SearchView mSearchView;
  23. private ListView mListView;
  24. private SimpleCursorAdapter mAdapter;
  25. private Cursor mCursor;
  26.  
  27. static final String[] PROJECTION = new String[] { ContactsContract.RawContacts._ID, ContactsContract.RawContacts.DISPLAY_NAME_PRIMARY };
  28.  
  29. @Override
  30. protected void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. setContentView(R.layout.activity_main);
  33.  
  34. // 得到联系人名单的指针
  35. mCursor = getContentResolver().query(RawContacts.CONTENT_URI, PROJECTION, null, null, null);
  36. // 通过传入mCursor,将联系人名字放入listView中。
  37. mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, mCursor,
  38. new String[] { RawContacts.DISPLAY_NAME_PRIMARY }, new int[] { android.R.id.text1 }, 0);
  39.  
  40. mListView = (ListView) findViewById(android.R.id.list);
  41. mListView.setAdapter(mAdapter);
  42. mListView.setOnScrollListener(new OnScrollListener() {
  43.  
  44. @Override
  45. public void onScrollStateChanged(AbsListView view, int scrollState) {
  46. InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
  47. if (imm != null) {
  48. imm.hideSoftInputFromWindow(mListView.getWindowToken(), 0); // 输入法如果是显示状态,那么就隐藏输入法
  49. }
  50. }
  51.  
  52. @Override
  53. public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
  54.  
  55. }
  56. });
  57.  
  58. mSearchView = (SearchView) findViewById(R.id.search);
  59. /**
  60. * 默认情况下, search widget是"iconified“的,只是用一个图标 来表示它(一个放大镜),
  61. * 当用户按下它的时候才显示search box . 你可以调用setIconifiedByDefault(false)让search
  62. * box默认都被显示。 你也可以调用setIconified()让它以iconified“的形式显示。
  63. */
  64. mSearchView.setIconifiedByDefault(true);
  65. /**
  66. * 默认情况下是没提交搜索的按钮,所以用户必须在键盘上按下"enter"键来提交搜索.你可以同过setSubmitButtonEnabled(
  67. * true)来添加一个提交按钮("submit" button)
  68. * 设置true后,右边会出现一个箭头按钮。如果用户没有输入,就不会触发提交(submit)事件
  69. */
  70. mSearchView.setSubmitButtonEnabled(true);
  71. /**
  72. * 初始是否已经是展开的状态
  73. * 写上此句后searchView初始展开的,也就是是可以点击输入的状态,如果不写,那么就需要点击下放大镜,才能展开出现输入框
  74. */
  75. mSearchView.onActionViewExpanded();
  76. // 设置search view的背景色
  77. mSearchView.setBackgroundColor(0x22ff00ff);
  78. /**
  79. * 默认情况下, search widget是"iconified“的,只是用一个图标 来表示它(一个放大镜),
  80. * 当用户按下它的时候才显示search box . 你可以调用setIconifiedByDefault(false)让search
  81. * box默认都被显示。 你也可以调用setIconified()让它以iconified“的形式显示。
  82. */
  83. mSearchView.setIconifiedByDefault(true);
  84. mSearchView.setOnQueryTextListener(new OnQueryTextListener() {
  85.  
  86. private String TAG = getClass().getSimpleName();
  87.  
  88. /*
  89. * 在输入时触发的方法,当字符真正显示到searchView中才触发,像是拼音,在舒服法组词的时候不会触发
  90. *
  91. * @param queryText
  92. *
  93. * @return false if the SearchView should perform the default action
  94. * of showing any suggestions if available, true if the action was
  95. * handled by the listener.
  96. */
  97. @Override
  98. public boolean onQueryTextChange(String queryText) {
  99. Log.d(TAG, "onQueryTextChange = " + queryText);
  100.  
  101. String selection = RawContacts.DISPLAY_NAME_PRIMARY + " LIKE '%" + queryText + "%' " + " OR "
  102. + RawContacts.SORT_KEY_PRIMARY + " LIKE '%" + queryText + "%' ";
  103. // String[] selectionArg = { queryText };
  104. mCursor = getContentResolver().query(RawContacts.CONTENT_URI, PROJECTION, selection, null, null);
  105. mAdapter.swapCursor(mCursor); // 交换指针,展示新的数据
  106. return true;
  107. }
  108.  
  109. /*
  110. * 输入完成后,提交时触发的方法,一般情况是点击输入法中的搜索按钮才会触发。表示现在正式提交了
  111. *
  112. * @param queryText
  113. *
  114. * @return true to indicate that it has handled the submit request.
  115. * Otherwise return false to let the SearchView handle the
  116. * submission by launching any associated intent.
  117. */
  118. @Override
  119. public boolean onQueryTextSubmit(String queryText) {
  120. Log.d(TAG, "onQueryTextSubmit = " + queryText);
  121.  
  122. if (mSearchView != null) {
  123. // 得到输入管理对象
  124. InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
  125. if (imm != null) {
  126. // 这将让键盘在所有的情况下都被隐藏,但是一般我们在点击搜索按钮后,输入法都会乖乖的自动隐藏的。
  127. imm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0); // 输入法如果是显示状态,那么就隐藏输入法
  128. }
  129. mSearchView.clearFocus(); // 不获取焦点
  130. }
  131. return true;
  132. }
  133. });
  134. }
  135.  
  136. }

四、ActionBar上的搜索框

如果我们想要实现下面这种效果,将搜索框放在actionbar上,该怎么做呢?

  

实现方式在menu菜单中添加一个searchview,然后在初始化菜单的时候进行配置

4.1 options_menu.xml

  1. <!--
  2. /*
  3. ** Copyright 2010, The Android Open Source Project
  4. **
  5. ** Licensed under the Apache License, Version 2.0 (the "License");
  6. ** you may not use this file except in compliance with the License.
  7. ** You may obtain a copy of the License at
  8. **
  9. ** http://www.apache.org/licenses/LICENSE-2.0
  10. **
  11. ** Unless required by applicable law or agreed to in writing, software
  12. ** distributed under the License is distributed on an "AS IS" BASIS,
  13. ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. ** See the License for the specific language governing permissions and
  15. ** limitations under the License.
  16. */
  17. -->
  18. <!-- Options Menu for SearchableActivity and WordActivity.
  19. -->
  20. <menu xmlns:android="http://schemas.android.com/apk/res/android">
  21. <item android:id="@+id/search"
  22. android:title="@string/search"
  23. android:icon="@drawable/ic_menu_search"
  24. android:showAsAction="collapseActionView|ifRoom"
  25. android:actionViewClass="android.widget.SearchView" />
  26. </menu>

Java

这里我没绑定监听器,其实完全可以在这里给searchview绑定监听器的。

  1. /*
  2. * search widget现在已经被配置好了,系统也能够把搜索命令发送到你的Searchable activity.
  3. * 你也可以在 search widget中使用search suggestions。
  4. *
  5. * @param menu
  6. * @return
  7. */
  8. @Override
  9. public boolean onCreateOptionsMenu(Menu menu) {
  10.  
  11. getMenuInflater().inflate(R.menu.options_menu, menu);
  12.  
  13. SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
  14. SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
  15. SearchableInfo info = searchManager.getSearchableInfo(getComponentName());
  16. searchView.setSearchableInfo(info);
  17.  
  18. searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default
  19. return true;
  20. }

这样写完后,search后的结果就会传送到你想要处理搜索结果的activity中了(本例是当前的activity)

  1. @Override
  2. protected void onNewIntent(Intent intent) {
  3. setIntent(intent);
  4. handleIntent(intent);
  5. }
  6.  
  7. private void handleIntent(Intent intent) {
  8. if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
  9. String query = intent.getStringExtra(SearchManager.QUERY);
  10. doMySearch(query);
  11. }
  12. }
  13.  
  14. private void doMySearch(String query) {
  15. // TODO 自动生成的方法存根
  16. Toast.makeText(this, "do search " + query, 0).show();
  17. }

全部代码:

  1. package com.kale.searchview;
  2.  
  3. import android.app.Activity;
  4. import android.app.SearchManager;
  5. import android.app.SearchableInfo;
  6. import android.content.Context;
  7. import android.content.Intent;
  8. import android.database.Cursor;
  9. import android.os.Bundle;
  10. import android.provider.ContactsContract;
  11. import android.provider.ContactsContract.RawContacts;
  12. import android.util.Log;
  13. import android.view.Menu;
  14. import android.view.inputmethod.InputMethodManager;
  15. import android.widget.AbsListView;
  16. import android.widget.AbsListView.OnScrollListener;
  17. import android.widget.ListView;
  18. import android.widget.SearchView;
  19. import android.widget.Toast;
  20. import android.widget.SearchView.OnQueryTextListener;
  21. import android.widget.SimpleCursorAdapter;
  22.  
  23. public class MainActivity extends Activity {
  24.  
  25. private SearchView mSearchView;
  26. private ListView mListView;
  27. private SimpleCursorAdapter mAdapter;
  28. private Cursor mCursor;
  29.  
  30. static final String[] PROJECTION = new String[] { ContactsContract.RawContacts._ID, ContactsContract.RawContacts.DISPLAY_NAME_PRIMARY };
  31.  
  32. @Override
  33. protected void onCreate(Bundle savedInstanceState) {
  34. super.onCreate(savedInstanceState);
  35. setContentView(R.layout.activity_main);
  36.  
  37. // 得到联系人名单的指针
  38. mCursor = getContentResolver().query(RawContacts.CONTENT_URI, PROJECTION, null, null, null);
  39. // 通过传入mCursor,将联系人名字放入listView中。
  40. mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, mCursor,
  41. new String[] { RawContacts.DISPLAY_NAME_PRIMARY }, new int[] { android.R.id.text1 }, 0);
  42.  
  43. mListView = (ListView) findViewById(android.R.id.list);
  44. mListView.setAdapter(mAdapter);
  45. mListView.setOnScrollListener(new OnScrollListener() {
  46.  
  47. @Override
  48. public void onScrollStateChanged(AbsListView view, int scrollState) {
  49. InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
  50. if (imm != null) {
  51. imm.hideSoftInputFromWindow(mListView.getWindowToken(), 0); // 输入法如果是显示状态,那么就隐藏输入法
  52. }
  53. }
  54.  
  55. @Override
  56. public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
  57.  
  58. }
  59. });
  60.  
  61. mSearchView = (SearchView) findViewById(R.id.search);
  62. /**
  63. * 默认情况下, search widget是"iconified“的,只是用一个图标 来表示它(一个放大镜),
  64. * 当用户按下它的时候才显示search box . 你可以调用setIconifiedByDefault(false)让search
  65. * box默认都被显示。 你也可以调用setIconified()让它以iconified“的形式显示。
  66. */
  67. mSearchView.setIconifiedByDefault(true);
  68. /**
  69. * 默认情况下是没提交搜索的按钮,所以用户必须在键盘上按下"enter"键来提交搜索.你可以同过setSubmitButtonEnabled(
  70. * true)来添加一个提交按钮("submit" button)
  71. * 设置true后,右边会出现一个箭头按钮。如果用户没有输入,就不会触发提交(submit)事件
  72. */
  73. mSearchView.setSubmitButtonEnabled(true);
  74. /**
  75. * 初始是否已经是展开的状态
  76. * 写上此句后searchView初始展开的,也就是是可以点击输入的状态,如果不写,那么就需要点击下放大镜,才能展开出现输入框
  77. */
  78. mSearchView.onActionViewExpanded();
  79. // 设置search view的背景色
  80. mSearchView.setBackgroundColor(0xff000000);
  81. /**
  82. * 默认情况下, search widget是"iconified“的,只是用一个图标 来表示它(一个放大镜),
  83. * 当用户按下它的时候才显示search box . 你可以调用setIconifiedByDefault(false)让search
  84. * box默认都被显示。 你也可以调用setIconified()让它以iconified“的形式显示。
  85. */
  86. mSearchView.setIconifiedByDefault(true);
  87. mSearchView.setOnQueryTextListener(new OnQueryTextListener() {
  88.  
  89. private String TAG = getClass().getSimpleName();
  90.  
  91. /*
  92. * 在输入时触发的方法,当字符真正显示到searchView中才触发,像是拼音,在舒服法组词的时候不会触发
  93. *
  94. * @param queryText
  95. *
  96. * @return false if the SearchView should perform the default action
  97. * of showing any suggestions if available, true if the action was
  98. * handled by the listener.
  99. */
  100. @Override
  101. public boolean onQueryTextChange(String queryText) {
  102. Log.d(TAG, "onQueryTextChange = " + queryText);
  103.  
  104. String selection = RawContacts.DISPLAY_NAME_PRIMARY + " LIKE '%" + queryText + "%' " + " OR "
  105. + RawContacts.SORT_KEY_PRIMARY + " LIKE '%" + queryText + "%' ";
  106. // String[] selectionArg = { queryText };
  107. mCursor = getContentResolver().query(RawContacts.CONTENT_URI, PROJECTION, selection, null, null);
  108. mAdapter.swapCursor(mCursor); // 交换指针,展示新的数据
  109. return true;
  110. }
  111.  
  112. /*
  113. * 输入完成后,提交时触发的方法,一般情况是点击输入法中的搜索按钮才会触发。表示现在正式提交了
  114. *
  115. * @param queryText
  116. *
  117. * @return true to indicate that it has handled the submit request.
  118. * Otherwise return false to let the SearchView handle the
  119. * submission by launching any associated intent.
  120. */
  121. @Override
  122. public boolean onQueryTextSubmit(String queryText) {
  123. Log.d(TAG, "onQueryTextSubmit = " + queryText);
  124.  
  125. if (mSearchView != null) {
  126. // 得到输入管理对象
  127. InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
  128. if (imm != null) {
  129. // 这将让键盘在所有的情况下都被隐藏,但是一般我们在点击搜索按钮后,输入法都会乖乖的自动隐藏的。
  130. imm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0); // 输入法如果是显示状态,那么就隐藏输入法
  131. }
  132. mSearchView.clearFocus(); // 不获取焦点
  133. }
  134. return true;
  135. }
  136. });
  137. }
  138.  
  139. @Override
  140. protected void onNewIntent(Intent intent) {
  141. setIntent(intent);
  142. handleIntent(intent);
  143. }
  144.  
  145. private void handleIntent(Intent intent) {
  146. if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
  147. String query = intent.getStringExtra(SearchManager.QUERY);
  148. doMySearch(query);
  149. }
  150. }
  151.  
  152. private void doMySearch(String query) {
  153. // TODO 自动生成的方法存根
  154. Toast.makeText(this, "do search " + query, 0).show();
  155. }
  156.  
  157. /*
  158. * search widget现在已经被配置好了,系统也能够把搜索命令发送到你的Searchable activity.
  159. * 你也可以在 search widget中使用search suggestions。
  160. *
  161. * @param menu
  162. * @return
  163. */
  164. @Override
  165. public boolean onCreateOptionsMenu(Menu menu) {
  166.  
  167. getMenuInflater().inflate(R.menu.options_menu, menu);
  168.  
  169. SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
  170. SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
  171. SearchableInfo info = searchManager.getSearchableInfo(getComponentName());
  172. searchView.setSearchableInfo(info);
  173.  
  174. searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default
  175. return true;
  176. }
  177.  
  178. }

源码下载:http://download.csdn.net/detail/shark0017/8364947

关于全局搜索请参考:http://blog.csdn.net/imdxt1986/article/details/7311958

再贴一个之前收集的demo,感觉是比较完善,但不效果不是很好。需要的话可以参考:http://download.csdn.net/detail/shark0017/8365121

参考自:

http://blog.csdn.net/hudashi/article/details/7052846

详细解读Android中的搜索框(三)—— SearchView的更多相关文章

  1. 详细解读Android中的搜索框—— SearchView

    以前总是自己写的 今天看看别人做的 本篇讲的是如何用searchView实现搜索框,其实原理和之前的没啥差别,也算是个复习吧. 一.Manifest.xml 这里我用一个activity进行信息的输入 ...

  2. 详细解读Android中的搜索框(二)—— Search Dialog

    Search Dialog是提供搜索的控件之一,还有一个是上次小例子给出的searchView,关于SearchView的东西后面会说到.本次先从Search Dialog说起,让大家慢慢理解andr ...

  3. 详细解读Android中的搜索框(一)—— 简单小例子

    这次开的是一个讲解SearchView的栏目,第一篇主要是给一个小例子,让大家对这个搜索视图有一个了解,之后再分布细化来说. 目标: 我们先来定个目标,我们通过搜索框来输入要搜索的联系人名字,输入的时 ...

  4. 详细解读Android中的搜索框(四)—— Searchable配置文件

    <?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android=" ...

  5. Android零基础入门第62节:搜索框组件SearchView

    原文:Android零基础入门第62节:搜索框组件SearchView 一.SearchView概述 SearchView是搜索框组件,它可以让用户在文本框内输入文字,并允许通过监听器监控用户输入,当 ...

  6. extjs在窗体中添加搜索框

    在extjs中添加搜索框,搜索框代码如下: this.searchField = new Ext.ux.form.SearchField({            store : this.store ...

  7. android中解析文件的三种方式

    android中解析文件的三种方式     好久没有动手写点东西了,最近在研究android的相关技术,现在就android中解析文件的三种方式做以下总结.其主要有:SAX(Simple API fo ...

  8. Android自定义View——自定义搜索框(SearchView)

    Android自定义View——自定义搜索框(SearchView) http://www.apkbus.com/android-142064-1-1.html

  9. WPF实用指南一:在WPF窗体的边框中添加搜索框和按钮

    原文:WPF实用指南一:在WPF窗体的边框中添加搜索框和按钮 在边框中加入一些元素,在应用程序的界面设计中,已经开始流行起来.特别是在浏览器(Crome,IE,Firefox,Opera)中都有应用. ...

随机推荐

  1. 扩展欧几里得,解线性同余方程 逆元 poj1845

    定理:对于任意整数a,b存在一堆整数x,y,满足ax+by=gcd(a,b) int exgcd(int a,int b,int &x,int &y){ ){x=,y=;return ...

  2. js改变或添加className

    js改变或添加className <style type="text/css"> .newDiv { font-weight: bold; } </style&g ...

  3. python 全栈开发,Day72(昨日作业讲解,昨日内容回顾,Django多表创建)

    昨日作业讲解 1.图书管理系统 实现功能:book单表的增删改查 1.1 新建一个项目bms,创建应用book.过程略... 1.2 手动创建static目录,并在目录里面创建css文件夹,修改set ...

  4. 获取更新元素文本html()

    html() 方法,获取元素文本,包含元素标签,也可以设置元素的文本值(包含元素标签),还可以包含子元素标签.相当于JavaScript中的innerHTML. <!DOCTYPE html&g ...

  5. bootstrap——辅助类和响应式工具类

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. POJ 2184 Cow Exhibition (带负值的01背包)

    题意:给你N(N<=100)只牛,每只牛有一个智慧值Si和一个活泼值Fi,现在要从中找出一些来,使得这些牛智慧值总和S与活泼值总和F之和最大,且F和S均为正.Si和Fi范围在-1000到1000 ...

  7. [SDOI2012]拯救小云公主

    题解: 是一个不错的题目 首先我们可以考虑二分答案 然后变成判定性问题 对于每个画一个圆 当其会被阻断时就是答案 阻断有四种情况 左下 上下 左右 右上 但是这样是n^2a(n)*logn的 考虑直接 ...

  8. 最小生成树<lct>

    题解: lct动态维护最小生成树 每次加边时若这两个之间不连通,那么直接连接 如果这两个点联通,那么就找到这条边上的最大值 如果这个大于当前边,就替换掉 但是需要注意的是lct只能维护点,不能维护边 ...

  9. 解决python中遇到的乱码问题

    1. 解决中文乱码的一种可行方法 # -*- coding:utf-8 -*- from __future__ import unicode_literals import chardet def s ...

  10. Docker dockerfile镜像编码

    一. 大多数docker基础镜像使用locale查看编码,发现默认编码都是POSIX,这会导致中文乱码.解决方法如下: 二.首先使用locale -a查看容器所有语言环境 三.dockerfile中加 ...