【问题标题】:Change SearchView TextSize更改 SearchView 文本大小
【发布时间】:2017-06-01 14:24:31
【问题描述】:

我在xml 中有以下SearchView 实现,文本条目已从顶部剪切,如下图所示。不管textSize我说什么,都没有改变。

<LinearLayout
   android:orientation="horizontal"
   android:layout_width="match_parent"
   android:layout_height="32dp"
   android:gravity="center_vertical"
   android:layout_marginTop="10dp">
     <SearchView
        android:id="@+id/search_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="12sp"/>
</LinearLayout>

【问题讨论】:

  • 您在顶部有一些填充,可以切割字母。提供完整的xml
  • 你试过这个解决方案*.com/a/12942258/4856245
  • 我在问题中的 xml 中添加了其他信息

标签: android


【解决方案1】:

您可以使用主题来实现此目的:

在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" // use app:theme not in style
            android:layout_height="80dp"
            android:layout_marginTop="15dp"/>

【讨论】:

    【解决方案2】:

    我们可以直接在theme.xml中改 它将影响整个应用程序,它有一个搜索视图。

    例如,

        <item name="colorControlHighlight">@color/colorAccent</item>
        <item name="colorControlNormal">@android:color/black</item>
        <item name="android:editTextColor">@android:color/white</item>
        <item name="android:textColorHint">@android:color/white</item>
        <item name="android:textSize">30sp</item>
    
    </style>
    

    【讨论】:

      【解决方案3】:
      sv= (SearchView) findViewById(R.id.search_view);
      TextView searchText = (TextView)               
      sv.findViewById(android.support.v7.appcompat.R.id.search_src_text);
      searchText.setTextSize(TypedValue.COMPLEX_UNIT_SP,12);
      

      【讨论】:

        【解决方案4】:

        试试这个

        你必须在这个方法中传递你的SearchViewtextSize

        private void setSearchviewTextSize(SearchView searchView, int fontSize) {
                try {
                    AutoCompleteTextView autoCompleteTextViewSearch = (AutoCompleteTextView) searchView.findViewById(searchView.getContext().getResources().getIdentifier("app:id/search_src_text", null, null));
                    if (autoCompleteTextViewSearch != null) {
                        autoCompleteTextViewSearch.setTextSize(TypedValue.COMPLEX_UNIT_SP, fontSize);
                    } else {
                        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(TypedValue.COMPLEX_UNIT_SP, fontSize);
                    }
                } catch (Exception e) {
                    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(TypedValue.COMPLEX_UNIT_SP, fontSize);
                }
            }
        

        同时更新您的 XML

        <LinearLayout
           android:orientation="horizontal"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:gravity="center_vertical">
             <SearchView
                android:id="@+id/search_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="12sp"/>
        </LinearLayout>
        

        【讨论】:

        • 我在问题中的 xml 中添加了其他信息。
        • 它在本机应用程序中为我工作,我不知道 xamarin。
        • 在 Xamarin 中它是相似的,除了你使用 Android.Util.ComplexUnitType.Sp 而不是 TypedValue.COMPLEX_UNIT_SP