【发布时间】:2016-09-06 19:50:29
【问题描述】:
我的SearchView 位于LinearLayout/RelativeLayout 而不是操作栏。
它的默认文字颜色是白色,如何更改?
【问题讨论】:
标签: android searchview
我的SearchView 位于LinearLayout/RelativeLayout 而不是操作栏。
它的默认文字颜色是白色,如何更改?
【问题讨论】:
标签: android searchview
试试这个,如果它不起作用尝试改变你的主题。
((EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text)).setHintTextColor(getResources().getColor(R.color.white));
或者这样试试
searchView.setQueryHint(Html.fromHtml("<font color = #ffffff>" + getResources().getString(R.string.hintSearchMess) + "</font>"));
【讨论】:
对于 Androidx 库
SearchView searchView = (SearchView) findViewById(R.id.search);
EditText searchEditText = searchView.findViewById(androidx.appcompat.R.id.search_src_text);
searchEditText.setTextColor(getResources().getColor(R.color.white));
searchEditText.setHintTextColor(getResources().getColor(R.color.white));
对于 Android 支持库
SearchView searchView = (SearchView) findViewById(R.id.search);
EditText searchEditText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
searchEditText.setTextColor(getResources().getColor(R.color.white));
searchEditText.setHintTextColor(getResources().getColor(R.color.white));
【讨论】:
onPrepareOptionsMenu方法中添加这段代码吗?
试试这个,
SearchView searchView= (SearchView) findViewById(R.id.searchView1);
int id = searchView.getContext()
.getResources()
.getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) searchView.findViewById(id);
textView.setTextColor(Color.WHITE);
或
((EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text))
.setHintTextColor(getResources().getColor(R.color.white));
或
searchView.setQueryHint(Html.fromHtml("<font color = #ffffff>" +
getResources().getString(R.string.your_str) + "</font>"));
这可能会对你有所帮助。
【讨论】:
深入研究 appcompat SearchView 的源代码,我发现它使用 AppCompatAutoCompleteTextView,默认情况下使用 autoCompleteTextView 样式。
创建不同的自动完成样式并将其设置在应用主题中解决了我的问题。
<style name="SearchAutoCompleteTextView" parent="Widget.AppCompat.Light.AutoCompleteTextView">
<item name="android:textColor">@color/my_text_color</item>
<item name="android:textColorHint">@color/my_hint_color</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.Light">
...
<item name="autoCompleteTextViewStyle">@style/SearchAutoCompleteTextView</item>
</style>
【讨论】:
app:theme="@style/SearchViewTextTheme" 而不是将其应用于整个 AppTheme 来为单个 searchViews 设置它
我会通过 xml 布局文件来完成这种工作。这可以在 res/layout 文件夹中找到。
您需要执行类似于以下的操作:
将此添加到父主题。
<item name="android:editTextColor">@android:color/white</item>
这应该会改变输入的文本。
你也可以这样使用:
<item name="android:textColorHint">@android:color/white</item>
它将更改 SearchView 的提示文本。
希望这会有所帮助:)
【讨论】:
对我来说,下一个方法是:
1.将样式添加到您的styles.xml中
<style name="SearchViewStyle" parent="Widget.AppCompat.SearchView">
<item name="android:textColor">@color/white</item>
<item name="android:editTextColor">@color/white</item>
<item name="android:textColorHint">@color/light_gray</item>
</style>
2.在 SearchView 布局代码中添加这一行
app:theme="@style/SearchViewStyle"
【讨论】:
在这个link中搜索图标、搜索提示图标、关闭图标、盘子、查询提示颜色、查询颜色的颜色发生了变化
【讨论】:
只需使用android:theme 属性覆盖默认颜色:
<androidx.appcompat.widget.SearchView
android:theme="@style/ThemeOverlay.SearchView"
与
<style name="ThemeOverlay.SearchView" parent="">
<!-- Text color -->
<item name="android:editTextColor">@color/...</item>
<!-- Hint text color -->
<item name="android:textColorHint">@color/...</item>
</style>
【讨论】:
这对我有用:
EditText searchEditText = searchView.findViewById(androidx.appcompat.R.id.search_src_text);
searchEditText.setTextColor(getResources().getColor(R.color.white));
searchEditText.setHint("Search");
searchEditText.setHintTextColor(getResources().getColor(R.color.white));
【讨论】: