【问题标题】:How to set SearchView TextSize?如何设置 SearchView 文本大小?
【发布时间】:2012-05-19 02:16:45
【问题描述】:

我在LinearLayout 中有一个SearchView,我正在尝试为它设置一个不同的TextSizeSearchView),但是例如在设置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吗?

【问题讨论】:

    标签: android searchview


    【解决方案1】:

    我已经创建了 kotlin 扩展函数

    fun SearchView.setTextSize(size: Float) {
        findViewById<EditText>(R.id.search_src_text).textSize = size
    }
    

    【讨论】:

      【解决方案2】:

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

      styles.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!!
            .
            .
            .
               />
      

      【讨论】:

        【解决方案3】:

        虽然AutoCompleteTextViewSearchAutoComplete 的超类,但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);
           }
        

        【讨论】:

          【解决方案4】:

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

          在styles.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"/>
          

          【讨论】:

          • 也许是更好的解决方案
          【解决方案5】:

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

            • 海。我没有使用 ActionBarSherlock。
            • 问题是关于文本 size,而不是颜色。为了完整起见,答案中的第二行应类似于:searchTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.font_size))
            • 为什么 text_color 会发生变化? OP 只是想改变 text_size
            【解决方案7】:

            你可以用代码来做这些

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

            【讨论】:

            • 第一种方法,使用次线性布局非常适合我。无论出于何种原因,使用 getIdentifier() 的第二种方法会产生一个空的 search_text。不管怎样,谢谢你的回答,因为这正是我需要减小字体大小的原因
            • 第二种方法的 NullPointerException
            • 对于第二种工作方法,我使用了这个 id:android.support.v7.appcompat.R.id.search_src_text
            • androidx应该用什么?
            • @AanalMehta 你可以使用 androidx 的第一个解决方案
            猜你喜欢
            • 2020-01-02
            • 1970-01-01
            • 1970-01-01
            • 2021-12-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-01-12
            • 1970-01-01
            相关资源
            最近更新 更多