2012-05-10 22 views
13

Ich habe eine SearchView innerhalb einer LinearLayout und ich versuche, eine andere TextSize dafür zu setzen (die SearchView), aber bei der Einstellung android:textSize="60sp" zum Beispiel passiert nichts.Wie setze ich SearchView TextSize?

Dies ist mein Code:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:padding="2dp"> 
<SearchView 
     android:id="@+id/searchView" 
     android:layout_width="350dp" 
     android:textSize="60sp" 
     android:layout_height="80dp" 
     android:layout_marginTop="15dp"/> 
<ListView 
     android:id="@+id/search_results" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 

Wer weiß, wie die TextSize der Steuerung zu ändern?

Antwort

31

Sie können diese unter Verwendung von Code zu tun ist

SearchView searchView = new SearchView(context); 
LinearLayout linearLayout1 = (LinearLayout) searchView.getChildAt(0); 
LinearLayout linearLayout2 = (LinearLayout) linearLayout1.getChildAt(2); 
LinearLayout linearLayout3 = (LinearLayout) linearLayout2.getChildAt(1); 
AutoCompleteTextView autoComplete = (AutoCompleteTextView) linearLayout3.getChildAt(0); 
autoComplete.setTextSize(60); 

Hier ist eine andere Lösung

SearchView searchView = new SearchView(context); 
AutoCompleteTextView search_text = (AutoCompleteTextView) searchView.findViewById(searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null)); 
search_text.setTextColor(Color.WHITE); 
search_text.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.text_small)); 
+2

Die erste Methode, mit sublinear Layouts für mich gearbeitet perfekt . Aus irgendeinem Grund erzeugt die zweite Methode, die getIdentifier() verwendet, einen Null-Suchtext. Wie auch immer, danke für die Antwort, da dies genau das war, was ich brauchte, um die Schriftgröße etwas zu verringern. – Silmarilos

+2

NullPointerException von der zweiten Methode –

+0

für die zweite Methode, die ich verwendete diese ID: android.support.v7.appcompat.R. id.search_src_text – moxi

4

Wenn ActionBarSherlock verwenden Sie, dies zu tun haben:

AutoCompleteTextView searchTextView = (AutoCompleteTextView) searchView.findViewById(R.id.abs__search_src_text); 
    searchTextView.setTextColor(getResources().getColor(R.color.search_text_color)); 
+0

Hy. Ich verwende kein ActionBarSherlock. – tetius

+1

Die Frage war Text * Größe *, keine Farbe. Der Vollständigkeit halber sollte die zweite Zeile in Ihrer Antwort etwa so aussehen: 'searchTextView.setTextSize (TypedValue.COMPLEX_UNIT_PX, getResources(). GetDimension (R.dimen.font_size))' – gnuf

9

Sie können diese mit einem Thema erreichen:

in styles.xml

<style name="AppSearchView" parent="Widget.AppCompat.SearchView" > 
     <item name="android:textSize">60sp</item> 
    </style> 

Und mit einem Suche

<android.support.v7.widget.SearchView 
      android:id="@+id/searchView" 
      android:layout_width="350dp" 
      app:theme="@style/AppSearchView" 
      android:layout_height="80dp" 
      android:layout_marginTop="15dp"/> 
+1

Schön, dass es funktioniert, danke –