在使用ActionBarSherlock时,如何更改SearchView中文本的颜色?

4

我想要改变ActionBarSherlock的SearchView中文本的颜色,因此我在StackOverflow上找到了以下内容:

AutoCompleteTextView searchText = (AutoCompleteTextView) searchView.findViewById(R.id.abs__search_src_text);
searchText.setHintTextColor(getResources().getColor(R.color.white));
searchText.setTextColor(getResources().getColor(R.color.white));    

但问题在于searchText无论如何都是空的。我也尝试了search_src_text(没有abs__) - 再一次,searchTextnull

我使用Sherlock作为我的ActionBar(具有自定义视图的ActionBar),但我也希望更改搜索视图的文本颜色。

有什么我不明白的吗?


你的布局是什么样子的,你的应用程序运行在哪个版本的Android上?添加和应用一些自定义样式而不是通过编程分配它们是相当常见的。 abs__... 标识符只有在Honeycomb之前的设备上才有(潜在的)用处。 - Trinimon
我的ActionBar的自定义视图布局是一个简单的LinearLayout,其中包含两个ImageView。我运行应用程序的Android版本是4.2。 - user584513
请查看此链接:https://dev59.com/e2gu5IYBdhLWcg3wxZzd - karan
2个回答

7

按照以下方式更改和应用您的样式:

  1. Overwrite SearchViewStyle that defines relevant style.

    <style name="SearchViewStyle" 
           parent="Widget.Sherlock.Light.SearchAutoCompleteTextView">
        <item name="android:textColor">myTextColor</item>
    </style>
    
  2. Add this style definition to your app theme.

    <style name="CustomTheme" parent="Theme.Sherlock.Light">
        ...
        <item name="searchAutoCompleteTextView">@style/SearchViewStyle</item>
        ...
    </style>
    
  3. Apply this theme in your Manifest (android:theme="CustomTheme").

希望这可以帮到你...干杯!注意,在ABS样式定义(XML文件)中搜索"SearchViewStyle"。这样,您就可以使用Ctrl+单击定义来跟踪可用的样式。

有关如何使光标也变为白色的建议吗? - QED
1
你看过这个吗:https://dev59.com/u1XTa4cB1Zd3GeqP1m-b 还是这个:https://dev59.com/WG_Xa4cB1Zd3GeqP6egc? - Trinimon

0

另一种方式,适合我

@Override
public boolean onCreateOptionsMenu(Menu menu) {
        searchView = new SearchView(getSupportActionBar().getThemedContext());

        AutoCompleteTextView searchText = (AutoCompleteTextView) searchView.findViewById(R.id.abs__search_src_text);
        searchText.setTextColor(Color.BLACK); 
.....................
}

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