37

我有一个SearchView内部 a LinearLayout,我正在尝试TextSize为它设置一个不同的(SearchView),但是android:textSize="60sp"例如在设置时,什么也没有发生。

这是我的代码:

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

有谁知道如何修改TextSize控件的?

4

7 回答 7

64

您可以使用主题来实现这一点:

在样式.xml

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

并使用 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"/>
于 2017-08-23T02:08:47.310 回答
42

您可以使用代码执行这些操作

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

这是另一个解决方案

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));
于 2012-10-17T19:52:05.433 回答
10

我希望我的解决方案会有所帮助(AndroidX)。

样式.xml

 <style name="SearchViewStyle" parent="Widget.AppCompat.Light.SearchView">
    <item name="android:textSize">20sp</item>
 </style>

your_layout_name.xml

<androidx.appcompat.widget.SearchView
      app:defaultQueryHint="Search"
      android:theme="@style/SearchViewStyle" // Not style!!
      .
      .
      .
         />
于 2020-04-02T18:32:39.073 回答
4

使用 ActionBarSherlock 时,您必须这样做:

    AutoCompleteTextView searchTextView = (AutoCompleteTextView) searchView.findViewById(R.id.abs__search_src_text);
    searchTextView.setTextColor(getResources().getColor(R.color.search_text_color));
于 2012-10-27T14:47:58.240 回答
2

我创建了 kotlin 扩展函数

fun SearchView.setTextSize(size: Float) {
    findViewById<EditText>(R.id.search_src_text).textSize = size
}
于 2021-11-12T03:34:20.067 回答
1

虽然AutoCompleteTextView是 的超类SearchAutoComplete,但SearchView使用SearchAutoComplete而不是AutoCompleteTextView。使用它并做更多事情。

SearchView searchView=...;
SearchView.SearchAutoComplete autoComplete= searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
float textSpSize=10.f;
if (autoComplete!=null){
    autoComplete.setTextSize(textSpSize);
   }
于 2018-11-13T11:49:30.033 回答
-2

检查这个答案我们可以限制Android中SearchView的edittext中的字符数吗?. 它使用SearchView.OnQueryTextListener来检查是否超出限制。

于 2014-05-28T23:21:05.940 回答