安卓搜索查看文本颜色



我正在尝试使搜索视图的用户键入的文本为白色。"android:searchViewTextField"给出一个错误。我找不到全局样式的正确名称:

<style name="AppTheme" parent="@style/_AppTheme"/>
<style name="_AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
  <item name="android:searchViewTextField">@color/white_color</item>
 </style>

是否有全局样式只会影响搜索视图的文本,而不会影响所有文本框?

定义主题"SearchTextViewTheme"

<style name="SearchTextViewTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <item name="android:textColor">@color/white_color</item>
</style>

然后在文本视图中

<TextView
    style="@style/SearchTextViewTheme"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

实际上,应用主题必须在布局 XML 中显式定义。因此,您不必担心主题会影响其他文本框

如果您的 targed SDK 为 20 或更少,则 Goolge 用于设置SearchView样式的属性是隐藏的,如果您尝试在主题中覆盖它们,您最终会遇到编译错误。

按照本教程,您可以使用 AppCompat v20 SearchView而不是本机SearchView。AppCompat 公开searchViewTextFieldsearchViewAutoCompleteTextView等属性以更改AutoCompleteTextView的样式。

以下是它在 Xamarin 中是如何完成的(我的想法来自 Patrick 的答案):

     [assembly: ExportRenderer(typeof (CustomSearchBar), typeof (CustomSearchBarRenderer))]
      namespace Bahai.Android.Renderers
      {
      public class CustomSearchBarRenderer : SearchBarRenderer
     {
       protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
    {
        base.OnElementChanged(e);
        if (e.OldElement == null)
        {
            SearchBar element = (SearchBar) this.Element;
            var native = (global::Android.Widget.SearchView) Control;
            // do whatever you want to the controls here!
            //--------------------------------------------
            // element.BackgroundColor = Color.Transparent;
            // native.SetBackgroundColor(element.BackgroundColor.ToAndroid());
            // native.SetBackgroundColor(Color.White.ToAndroid());
            //The text color of the SearchBar / SearchView 
            AutoCompleteTextView textField = (AutoCompleteTextView)
                (((Control.GetChildAt(0) as ViewGroup)
                    .GetChildAt(2) as ViewGroup)
                    .GetChildAt(1) as ViewGroup)
                    .GetChildAt(0);
            if (textField != null)
                textField.SetTextColor(Color.White.ToAndroid());
        }
    }
  }
  }

这起到了作用

 <style name="myTheme" parent="@style/Theme.AppCompat.Light">    
    <item name="android:editTextColor">#fffff</item>
  </style>

上述解决方案可能在 java 中工作,但它们在 xamarin 中不起作用,我想这个解决方案将在 java 中工作。

相关内容

  • 没有找到相关文章

最新更新