2014-12-29 2 views
0

Я пытаюсь сделать текст пользователем типа белого поиска. msgstr "android: searchViewTextField" введите ошибку. Я не могу найти правильное имя для глобального стиля:Android SearchView Цвет текста

<style name="AppTheme" parent="@style/_AppTheme"/> 

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

Есть глобальный стиль, который будет влияет только на текст на SearchView и не все текстовые поля?

ответ

1

Определить тему "SearchTextViewTheme"

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

Тогда внутри TextView

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

В самом деле, применяя тему должны быть четко определено в макете XML. Поэтому вам не придется беспокоиться о теме затрагивая другие текстовые поля

0

Вот как это делается инов Xamarin (я на основе идеи от ответа Патрика):

 [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()); 
     } 
    } 
    } 
    } 
1

Если targed SDK является 20 или меньше, атрибуты, используемые Goolge для стиля SearchView, скрыты, и вы получите ошибки компиляции, если попытаетесь переопределить их в своей теме.

Вы можете использовать AppCompat v20 SearchView вместо родного SearchView, следующего за этим tutorial. AppCompat предоставляет атрибуты, такие как searchViewTextField и searchViewAutoCompleteTextView, чтобы изменить стиль AutoCompleteTextView.

0

это сделал трюк

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

Эти решения могут работать в Java, но они не работают в Xamarin и я предполагаю, что это решение будет работать в Java.