首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android SearchView在输入时不显示文本

Android SearchView在输入时不显示文本
EN

Stack Overflow用户
提问于 2016-08-30 17:34:37
回答 5查看 2K关注 0票数 2

我意识到SearchView就像谷歌说的那样:

已在res/xml中创建searchable.xml

代码语言:javascript
复制
<?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中创建菜单项

代码语言:javascript
复制
<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

代码语言:javascript
复制
<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>

并实现了扩展AppCompatActivitySecondActivity

代码语言:javascript
复制
@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中添加了它们。

感谢您的任何想法或代码。

ADD:也许是因为工具栏的风格吧?

ADD 2:工具栏,但我不认为它是必要的

代码语言:javascript
复制
<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" />
EN

回答 5

Stack Overflow用户

发布于 2016-09-01 22:43:37

为工具栏提供任何显式的layout_height

代码语言:javascript
复制
<android.support.v7.widget.Toolbar
    ...
    android:layout_height="?attr/actionBarSize"
    ...
/>

附注:我找到了这个答案here,并投票决定结束这个重复的问题。

票数 3
EN

Stack Overflow用户

发布于 2016-08-30 18:24:53

据我所知,你有你的SearchView完美地工作,但它不像图标和文本颜色是白色的。所以我想告诉你如何改变你的SearchView的图标和文本颜色。

代码语言:javascript
复制
@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。因此,请遵循程序化的解决方案。

票数 0
EN

Stack Overflow用户

发布于 2018-06-20 06:49:11

情况可能不是这样,但在我的例子中,在单击搜索图标后,有一些其他视图正在从SearchView中移除焦点,这给我提供了与您的第二张图像相同的结果。

代码语言:javascript
复制
 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()对我来说很有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39223853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档