2012-05-10 19 views
13

mam SearchView Wewnątrz LinearLayout i próbuję ustawić inny TextSize dla niego (SearchView), ale przy ustawianiu android:textSize="60sp" na przykład, nic się nie dzieje.Jak ustawić SearchView TextSize?

To jest mój kod:

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

Czy ktoś wie jak zmodyfikować TextSize kontrolki?

Odpowiedz

31

Można zrobić te przy użyciu kodu

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

Oto Innym rozwiązaniem

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

pierwsza metoda, za pomocą układów sub-liniowe działało idealnie dla mnie . Z jakiegoś powodu, druga metoda używająca getIdentifier() generuje zerowy tekst_wyszukiwania. Tak czy siak, dziękuję za odpowiedź, ponieważ to było właśnie to, czego potrzebowałem, aby zmniejszyć rozmiar czcionki nieco o – Silmarilos

+2

NullPointerException z drugiej metody –

+0

dla drugiej metody do pracy Użyłem tego id: android.support.v7.appcompat.R. id.search_src_text – moxi

4

Podczas korzystania ActionBarSherlock trzeba to zrobić:

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

Hy. Nie używam ActionBarSherlock. – tetius

+1

Pytanie dotyczyło tekstu * rozmiaru *, a nie koloru. Dla kompletności, druga linia w twojej odpowiedzi powinna być czymś w rodzaju: 'searchTextView.setTextSize (TypedValue.COMPLEX_UNIT_PX, getResources(). GetDimension (R.dimen.font_size))' – gnuf

9

Można to osiągnąć przy użyciu motywu:

w styles.xml

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

i za pomocą 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

miło działa, dziękuję –