編輯:關於Android編程
就是實現在頂部這樣的搜索框。
一、這個搜索框是actionbar上的menu上的一個item.叫SearchView.我們可以先在menu選項裡定義好:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+Ym1hcF9tZW51LnhtbDo8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:java;">
二、配置searchble:
Search View 可以看作seachble activity在acionbar 的一種快捷入口的標識。那麼我們可以通過配置searchble 配置相關的信息:
在res/xml文件夾下(如果沒有xml文件夾,就新建一個),新建文件:searchable.xml
既然searchview是一個入口標識,那麼久需要在AndroidManifest.xml文件裡配置過濾:
public boolean onCreateOptionsMenu(Menu menu) { // 加入含有search view的菜單 MenuInflater inflater = getMenuInflater(); inflater.inflate(menuId, menu); // 獲取SearchView對象 SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); if(searchView == null){ Log.e("SearchView","Fail to get Search View."); return true; } searchView.setIconifiedByDefault(true); // 缺省值就是true,可能不專門進行設置,false和true的效果圖如下,true的輸入框更大 // 獲取搜索服務管理器 SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); // searchable activity的component name,由此系統可通過intent進行喚起 ComponentName cn = new ComponentName(this,SearchResultActvity.class); // 通過搜索管理器,從searchable activity中獲取相關搜索信息,就是searchable的xml設置。如果返回null,表示該activity不存在,或者不是searchable SearchableInfo info = searchManager.getSearchableInfo(cn); if(info == null){ Log.e("SearchableInfo",Fail to get search info."); } // 將searchable activity的搜索信息與search view關聯 searchView.setSearchableInfo(info); return true; }五、響應搜索的activity:
public class BmapActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { … … doSearchQuery(getIntent()); } @Override protected void onNewIntent(Intent intent) { //activity重新置頂 super.onNewIntent(intent); doSearchQuery(intent); } // 對searchable activity的調用仍是標准的intent,我們可以從intent中獲取信息,即要搜索的內容 private void doSearchQuery(Intent intent){ if(intent == null) return; String queryAction = intent.getAction(); if( Intent.ACTION_SEARCH.equals( intent.getAction())){ //如果是通過ACTION_SEARCH來調用,即如果通過搜索調用 String queryString = intent.getStringExtra(SearchManager.QUERY); //獲取搜索內容 … … } } … … }
1.如何改變默認搜索框底下的那條橫線的顏色,這個看似容易,其實很麻煩,如果直接設置背景圖片的話,很可能會造成疊加的情況。網上看了overflow論壇的人的方法,覺得都不太理想,有人提出 用反射的方法解決,我也是采用反射的辦法:
try{ Class> argClass=searchView.getClass(); Field ownField = argClass.getDeclaredField("mSearchPlate"); //setAccessible ownField.setAccessible(true); View mView = (View) ownField.get(searchView); mView.setBackground(getResources().getDrawable(R.drawable.test)); }catch(Exception e){ e.printStackTrace(); }但是這樣的有一個問題,假如你的searchView有一個submit的話,那麼僅僅是搜索框底下的那條橫線變色了,而submit下的顏色仍然為藍色。目前我也找不到submit這個成員變量名叫什麼。不知道各位有什麼好的辦法。
2.默認展開searchView:
很多人都有這個需求,想默認吧searchView展開,再加點默認文字在上面(不是hint).
這個使用這個展開:
MenuItem searchItem = menu.findItem(R.id.menu_search); searchItem.expandActionView();
searchView.setQuery("ok", false);
searchView.clearFocus();
參考:
谷歌開發文檔:http://developer.android.com/training/search/setup.html
恺風的博客 http://blog.csdn.net/flowingflying/article/details/14163401
Bitmap src = BitmapFactory.decodeResource(getResources(), imageId); //獲取Bitmap圖片Round
前言由於Android自帶的TextView控件沒有提供傾斜的(我暫時沒有找到),我們可以自定義控件來實現,下面首先來看我們實現的效果圖。TextView文字傾斜其實實現
需求:在mediaprovider數據庫中添加.mov後綴格式的視頻文件可以使用工具MediaInfo_GUI_0.7.67_Windows.3243836749.exe
前言內存洩漏簡單地說就是申請了一塊內存空間,使用完畢後沒有釋放掉。它的一般表現方式是程序運行時間越長,占用內存越多,最終用盡全部內存,整個系統崩潰。由程序申請的一塊內存,