Android 支持库 SearchView xml 属性 queryHint 和 iconifiedByDefault 不起作用

标签 android searchview

我在布局文件中有以下 SearchView

<android.support.v7.widget.SearchView
    android:id="@+id/search_view"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:queryHint="@string/search"
    android:iconifiedByDefault="false"

     />

但是,当我运行我的应用程序时,没有出现任何提示并且搜索 View 被图标化,在代码中它可以工作我的问题是这是支持库上的错误吗?

最佳答案

您缺少必需的命名空间。在 XML 布局中将 [yourapp] 替换为您的应用名称。将此命名空间用于 SearchView 属性。如果您使用支持库中的 View ,则此方法是必要的。顺便提一句。你必须对 menu for AppCompat action bar 做同样的事情.

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

    <android.support.v7.widget.SearchView
        android:id="@+id/fragment_address_search"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/global_bg_front"
        android:textSize="@dimen/global_text_medium"
        android:textColor="@color/global_text_primary"
        [yourapp]:queryHint="@string/fragment_address_search_hint"
        [yourapp]:iconifiedByDefault="false" />

</LinearLayout>

您还可以通过编程方式设置 SearchView。见我的template on GitHub .

private void setupSearchView(SearchView searchView)
{
    // search hint
    searchView.setQueryHint(getString(R.string.fragment_address_search_hint));

    // background
    View searchPlate = searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);
    searchPlate.setBackgroundResource(R.drawable.searchview_bg);

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

    // clear button
    ImageView searchClose = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
    searchClose.setImageResource(R.drawable.searchview_clear);

    // text color
    AutoCompleteTextView searchText = (AutoCompleteTextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
    searchText.setTextColor(getResources().getColor(R.color.global_text_primary));
    searchText.setHintTextColor(getResources().getColor(R.color.global_text_secondary));
}

关于Android 支持库 SearchView xml 属性 queryHint 和 iconifiedByDefault 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19680223/

相关文章:

android - textview 下面的 textview linearlayout

安卓剪辑 subview

android - 创建一个看起来像 Material 设计指南的 SearchView

android - 使用 ActionBarSherlock 在 SearchView 上出现 NullPointerException

android - isAttachedToWindow() 返回 false

显示 android.content.pm.PackageManager$NameNotFoundException : Application package com. google.android.backup 的 Android 日志猫

android - com.android.dex.DexException : Multiple dex files define Ledu/hawhamburg/vuforia/BuildConfig;

android - 尝试将 SearchView 添加到我的 appcompat Activity 时出现 Nullpointerexception

android - iconifiedByDefault 的 xml 版本被忽略

android - 如何在操作栏中构建类似于搜索框的Gmail?