将搜索视图中的文本颜色和提示文本颜色设置为文本。

3

我希望将android.support.v7.widget.SearchView中的文本颜色和提示文本颜色设置为非ActionBar和Menu选项中的文本。 我已经尝试了stackoverflow上提到的几种方法,但都没有起作用。

int searchSrcTextId =getResources().getIdentifier("android:id/search_src_text", null, null);  
EditText searchEditText = (EditText) searchView.findViewById(searchSrcTextId);  
searchEditText.setTextColor(Color.WHITE);  
searchEditText.setHintTextColor(Color.LTGRAY);  

我尝试了上面的代码,但在setTextColor行处出现了空指针异常。任何形式的帮助都将不胜感激。提前致谢。
4个回答

13

我会通过xml布局文件来完成这种工作。该文件可以在res/layout文件夹中找到。

您需要执行类似以下的操作:

将此添加到父主题中。

<item name="android:editTextColor">@android:color/white</item>

这应该会改变输入的文本。

你也可以使用类似以下的内容:

<item name="android:textColorHint">@android:color/white</item>

它会更改SearchView的提示文本。

希望这有所帮助 :)


1
非常感谢您的及时回复。这对我很有帮助。简单而有效的解决方案。非常感谢 :) - TheHound.developer
1
我有一个疑问。这会改变我的项目中所有EditText或SearchView的颜色吗? - TheHound.developer
1
因为我们要将这些项添加到主题的父级中,所以它会改变应用程序中所有SearchView的文本颜色,对吧? - TheHound.developer

5

我已经找到了解决问题的另一个方法。在程序中更改文本颜色时,我所提供的id是错误的。我们应该像下面这样编辑android.support.v7.widget.SearchView的代码。

EditText editText = ((EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text));
    editText.setHintTextColor(getResources().getColor(R.color.white));
    editText.setTextColor(getResources().getColor(R.color.white));

2

对于androidx:

 EditText searchEditText = (EditText) search_view_home.findViewById(androidx.appcompat.R.id.search_src_text);
 searchEditText.setTextColor(getResources().getColor(R.color.white));
 searchEditText.setHintTextColor(getResources().getColor(R.color.white));

-1

在工具栏上使用此功能。

    <androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/toolbarColor"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:contentInsetStartWithNavigation="0dp"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_scrollFlags="scroll|exitUntilCollapsed"
    app:navigationIcon="@drawable/ic_arrow_back"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:title="Toolbar"
    app:titleTextColor="@color/toolbarTextColor"/>

然后将其复制并粘贴到 style.xml 或 theme.xml 中

    <style name="ThemeOverlay.AppCompat.Dark.ActionBar" parent="Base.ThemeOverlay.AppCompat.Dark.ActionBar"/>
<style name="ThemeOverlay.AppCompat.Light" parent="Base.ThemeOverlay.AppCompat.Light"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接