2012-05-10 15 views
13

Ho un SearchView all'interno di un LinearLayout e sto cercando di impostare un diverso TextSize per esso (il SearchView), ma quando si imposta android:textSize="60sp" per esempio, non succede nulla.Come impostare SearchView TextSize?

Questo è il mio codice:

<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"/> 

Qualcuno sa come modificare il TextSize del controllo?

risposta

31

si potrebbe fare questi utilizzando il codice

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); 

Ecco un'altra soluzione

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

Il primo metodo, utilizzando layout sub-lineare ha funzionato perfettamente per me . Qualunque sia il motivo, il secondo metodo che usa getIdentifier() produce un testo di ricerca null. Ad ogni modo, grazie per la risposta in quanto questo era proprio quello di cui avevo bisogno per diminuire le dimensioni del carattere un po ' – Silmarilos

+2

NullPointerException dal secondo metodo –

+0

per il secondo metodo di lavoro che ho usato questo id: android.support.v7.appcompat.R. id.search_src_text – moxi

4

Quando si utilizza ActionBarSherlock quello che dovete fare questo:

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

Hy. Non sto usando ActionBarSherlock. – tetius

+1

La domanda riguardava il testo * size *, non il colore. Per completezza, la seconda riga della risposta dovrebbe essere qualcosa del tipo: 'searchTextView.setTextSize (TypedValue.COMPLEX_UNIT_PX, getResources(). GetDimension (R.dimen.font_size))' – gnuf

9

È possibile ottenere questo usando un tema:

in styles.xml

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

e utilizzando un SearchView

<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

nice its working, thanks –