簡體   English   中英

鍵入時Android SearchView不顯示文本

[英]Android SearchView not showing text when typing

我意識到SearchView就像Google所說的那樣:

res/xml創建了searchable.xml

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_name"
    android:hint="Search"
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" />

res/menu/second_activity_menu創建菜單項:

<item
    android:id="@+id/second_toolbar_search"
    android:icon="@mipmap/ic_search_black_24dp"
    android:orderInCategory="100"
    android:title="@string/search"
    app:showAsAction="collapseActionView|ifRoom"
    app:actionViewClass="android.support.v7.widget.SearchView" />

更改我的AndroidManifest

<activity android:name=".SecondActivity">
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
    <meta-data
        android:name="android.app.searchable"
        android:resource="@xml/searchable" />
</activity>

並實現了我的SecondActivity類,該類擴展了AppCompatActivity

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.second_activity_menu, menu);

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.second_toolbar_search).getActionView();

    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false);
    return true;
}

結果,我有這個:

工具欄

緊扣搜索圖標后,我有以下內容:

搜索查看

當我開始輸入內容時,它不會顯示,也不會顯示“清除”圖標和麥克風圖標。 但是我在searchable.xml添加了它們。

感謝您的任何想法或代碼。

添加:也許是因為工具欄樣式?

添加2:工具欄,但我認為這不是必需的

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?attr/actionBarSize"
        local:theme="@style/AppTheme" />

給工具欄任何明確的layout_height

<android.support.v7.widget.Toolbar
    ...
    android:layout_height="?attr/actionBarSize"
    ...
/>

附言:我在這里找到了這個答案並投票關閉了該問題,重復進行。

據我所知,您的SearchView正常工作,但是由於圖標和文本顏色為白色,因此它不可見。 因此,我想告訴您有關如何更改SearchView的圖標和文本顏色的信息。

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.second_activity_menu, menu);

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    MenuItem searchMenuItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    // Set text colour 
    SearchView.SearchAutoComplete searchAutoComplete = (SearchView.SearchAutoComplete)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
    searchAutoComplete.setHintTextColor(Color.WHITE);
    searchAutoComplete.setTextColor(Color.WHITE);

    View searchplate = (View)searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);
    searchplate.setBackgroundResource(R.drawable.texfield_searchview_holo_light);
    // Clear search or close icon
    ImageView searchCloseIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
    searchCloseIcon.setImageResource(R.drawable.clear_search);

    // Voice icon
    ImageView voiceIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_voice_btn);
    voiceIcon.setImageResource(R.drawable.abc_ic_voice_search);

    // Search icon
    ImageView searchIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
    searchIcon.setImageResource(R.drawable.abc_ic_search);

    return super.onCreateOptionsMenu(menu);
}

您很難從xml定制SearchView 因此,請遵循編程的解決方案。

可能並非如此,但是在我的情況下,還有其他一些View在單擊搜索圖標后立即將焦點從SearchView移開,這給了我與第二張圖片相同的結果。

 override fun onCreateOptionsMenu(menu: Menu): Boolean {
    menuInflater.inflate(R.menu.activity_main, menu)
    val searchItem = menu.findItem(R.id.action_search)
    val searchView = searchItem.actionView as? SearchView
    searchView?.setOnFocusChangeListener { _, _ ->
        // My ScrollView was requesting focus
    }
    return true
}

足夠奇怪的是,這將打開一個完美工作的虛擬鍵盤-具有輸入反饋聲音和所有內容-但使用它鍵入的所有內容都不會在屏幕上的任何位置顯示。 甚至searchView.setOnQueryTextListener()都不由輸入觸發,這意味着鍵入的文本會變得有些空白並且根本不使用。

在完成所有視圖及其焦點的工作后,使用searchView.requestFocus()對我searchView.requestFocus()

我遇到了同樣的問題,我的解決方案是設置

searchView.setMaxWidth(Integer.MAX_VALUE);
    searchView.setOnTouchListener { v, event ->
        if (event.action == MotionEvent.ACTION_UP){
            searchView.isIconified = false
        }
        false
    }

    searchView.setOnClickListener {
        searchView.isIconified = false
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM