欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android?SearchView搜索控件使用方法詳解

 更新時間:2022年04月18日 14:32:52   作者:清風一杯酒  
這篇文章主要為大家詳細介紹了Android?SearchView搜索控件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Android SearchView搜索控件的具體實現(xiàn)代碼,供大家參考,具體內(nèi)容如下

方法介紹

  • setQueryHint

設置 Hint 的文字內(nèi)容

  • setMaxWidth

設置搜索框的最大寬度

  • setSubmitButtonEnabled

是否顯示提交按鈕,默認是false

  • setIconified

搜索框是否展開,false表示展開

  • setIconifiedByDefault

是否鎖定搜索框為展開狀態(tài),false表示鎖定(放大鏡在搜索框外)

  • onActionViewExpanded

鎖定搜索框為展開狀態(tài)

  • onActionViewCollapsed

將當前狀態(tài)切換為收縮狀態(tài)

  • setImeOptions

改變軟鍵盤的右下角的回車鍵值
EditorInfo.IME_ACTION_SEARCH
表示右下角為搜索

使用方法

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
? ?xmlns:android="http://schemas.android.com/apk/res/android"
? ?android:layout_width="match_parent"
? ?android:layout_height="match_parent">

? ?<ListView
? ? ? android:layout_height="match_parent"
? ? ? android:layout_width="match_parent"
? ? ? android:id="@+id/mainListView1"/>

</LinearLayout>

java代碼

public class MainActivity extends AppCompatActivity
?{
? ?private ListView mListView;
? ?private ArrayAdapter mArrayAdapter;
? ?private String[]data={"a同學","b同學","c同學","d同學","A宿舍","B學校","C食堂","D教室","AA制"};
? ?private SearchView mSearchView;

? ?@Override
? ?protected void onCreate(Bundle savedInstanceState) {
? ? ? super.onCreate(savedInstanceState);
? ? ? setContentView(R.layout.activity_main);
? ? ??
? ? ? mArrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,data);
? ? ? mListView=findViewById(R.id.mainListView1);
? ? ? mListView.setAdapter(mArrayAdapter);
? ?}

? ?@Override
? ?public boolean onCreateOptionsMenu(Menu menu)
? ?{
? ? ? getMenuInflater().inflate(R.menu.menu,menu);
? ? ? MenuItem MenuItem=menu.findItem(R.id.action_search);
? ? ? mSearchView=(SearchView) MenuItemCompat.getActionView(MenuItem);
? ? ??
? ? ? mSearchView.setQueryHint("請輸入關鍵詞");
? ? ? mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){

? ? ? ? ? ? @Override
? ? ? ? ? ? public boolean onQueryTextSubmit(String p1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ?//點擊搜索按鈕事件
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?//收起鍵盤
? ? ? ? ? ? ? ?mSearchView.clearFocus();
? ? ? ? ? ? ? ?//收起搜索框
? ? ? ? ? ? ? ?mSearchView.onActionViewCollapsed();
? ? ? ? ? ? ? ?return false;
? ? ? ? ? ? }

? ? ? ? ? ? @Override
? ? ? ? ? ? public boolean onQueryTextChange(String p1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ?//當搜索框的文字內(nèi)容發(fā)生變化時調(diào)用
? ? ? ? ? ? ? ?mArrayAdapter.getFilter().filter(p1);
? ? ? ? ? ? ? ?return false;
? ? ? ? ? ? }
? ? ? ? ?});
? ? ??
? ? ? return super.onCreateOptionsMenu(menu);
? ?}

}
<?xml version="1.0" encoding="utf-8"?>
<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"
? ? ? app:actionViewClass="android.support.v7.widget.SearchView"
? ? ? app:showAsAction="ifRoom" />

? ?<item
? ? ? android:id="@+id/action_settings"
? ? ? app:showAsAction="never"/>
? ?
</menu>

效果圖

總結(jié)了幾個比較常見的問題,并在網(wǎng)上找到了相應的解決方案,親測有效

問題1:如何去掉下劃線或自定義背景

try { ? ? //--拿到字節(jié)碼 ? ? ?
? ? ? Class<?> argClass = mSearchView.getClass();
? ? ? //--指定某個私有屬性,mSearchPlate是搜索框父布局的名字 ? ? ? ?
? ? ? Field ownField = argClass.getDeclaredField("mSearchPlate");
? ? ? //--暴力反射,只有暴力反射才能拿到私有屬性 ? ? ??
? ? ? ownField.setAccessible(true);
? ? ? View mView = (View) ownField.get(mSearchView);
? ? ? //--設置背景?
? ? ? mView.setBackgroundColor(Color.TRANSPARENT);
? ? } catch (Exception e) {
? ? ? e.printStackTrace();
}

問題2:自定義文字與光標的顏色

int searchPlateId = mSearchView.getContext().getResources()
? ?.getIdentifier("android:id/search_plate", null, null);
View searchPlate = mSearchView.findViewById(searchPlateId);
if (searchPlate != null)
{
? ?int searchTextId = searchPlate.getContext().getResources()
? ?.getIdentifier("android:id/search_src_text", null, null);

? ?//自定義文本顏色
? ?TextView searchText = (TextView) searchPlate.findViewById(searchTextId);
? ?if (searchText != null)
? ?{
? ? ? searchText.setTextColor(Color.WHITE);
? ? ? searchText.setHintTextColor(Color.WHITE);
? ?}
try
{
? ?//自定義光標顏色
? ?Field mCursorDrawableRes=TextView.class.getDeclaredField("mCursorDrawableRes");?
? ?mCursorDrawableRes.setAccessible(true);?
? ?mCursorDrawableRes.set(searchText, R.drawable.cursor_color);?
}
catch (Exception e){}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
?? ?<solid
?? ??? ?android:color="#FFFF0000"/>
?? ?<size
?? ??? ?android:width="1dp"/>
</shape>

問題3:改變圖標渲染顏色為白色

  • 首先用Toolbar代替ActionBar
  • 然后為Toolbar添加屬性
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android 7.0新特性詳解

    Android 7.0新特性詳解

    本篇文章主要介紹了Android 7.0(牛軋?zhí)?新特性的相關知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • 解決Android平臺中應用程序OOM異常的方法

    解決Android平臺中應用程序OOM異常的方法

    這篇文章主要介紹了解決Android平臺中應用程序OOM異常的方法,通常這一塊也是程序中的重點之一,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Android中View跟隨手指滑動效果的實例代碼

    Android中View跟隨手指滑動效果的實例代碼

    這篇文章主要介紹了Android中View跟隨手指滑動效果的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Android?AMS啟動App進程原理分析

    Android?AMS啟動App進程原理分析

    這篇文章主要介紹了Android?AMS啟動App進程原理,系統(tǒng)fork函數(shù)是如何創(chuàng)建進程,文中有詳細的代碼示例,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-05-05
  • 詳解Android沉浸式實現(xiàn)兼容解決辦法

    詳解Android沉浸式實現(xiàn)兼容解決辦法

    本篇文章主要介紹了詳解Android沉浸式實現(xiàn)兼容解決辦法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 教你五分鐘實現(xiàn)Android超漂亮的刻度輪播控件實例教程

    教你五分鐘實現(xiàn)Android超漂亮的刻度輪播控件實例教程

    說到輪播圖,想必大家都不陌生,下面這篇文章主要給大家介紹了關于如何利用五分鐘快速實現(xiàn)一款超漂亮的Android刻度輪播控件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧
    2018-09-09
  • Android RecyclerView實現(xiàn)下拉刷新和上拉加載更多

    Android RecyclerView實現(xiàn)下拉刷新和上拉加載更多

    這篇文章主要為大家詳細介紹了Android RecyclerView實現(xiàn)下拉刷新和上拉加載更多,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android利用ContentProvider初始化組件的踩坑記錄

    Android利用ContentProvider初始化組件的踩坑記錄

    做Android SDK開發(fā)的時候,一般我們會將初始化的方法封裝,然后讓調(diào)用SDK的開發(fā)者在Application的onCreate方法中進行初始化,下面這篇文章主要給大家介紹了關于Android利用ContentProvider初始化組件的踩坑記錄,需要的朋友可以參考下
    2022-04-04
  • 淺析Android文件管理器(項目一)

    淺析Android文件管理器(項目一)

    這篇文章主要介紹了淺析Android文件管理器(一)的相關資料,需要的朋友可以參考下
    2015-11-11
  • 詳解Flutter?響應式狀態(tài)管理框架GetX

    詳解Flutter?響應式狀態(tài)管理框架GetX

    這篇文章主要為大家介紹了Flutter?響應式狀態(tài)管理框架GetX詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09

最新評論