Android - SearchView 设置过滤器和文本颜色

问题描述 投票:0回答:1

我正在尝试创建一个 SearchView 并以编程方式更改文本颜色并添加过滤器,例如最大长度。

SearchView search = findViewById(R.id.searchView1);
TextView textView = search.findViewById(R.id.search_src_text);
    textView.setTextColor(Color.rgb(0, 0, 0));
    textView.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)});

这样它说无法解析符号'search_src_text'

然后我尝试了:

SearchView search = findViewById(R.id.searchView1);
int id = search.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
        TextView textView = search.findViewById(id);
        textView.setTextColor(Color.rgb(0, 0, 0));
        textView.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)});

在这种情况下,没有错误,但只有警告,不鼓励使用 getIdentifier

我的 xml 搜索视图:

<SearchView
    android:id="@+id/searchView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    android:background="@drawable/searchfield"
     />

有没有其他方法可以用 SearchView 做同样的事情而不出现任何警告和错误?

android searchview
1个回答
0
投票

我建议将 SearchView 替换为

androidx.appcompat.widget.SearchView
并使用

val searchView: SearchView = findViewById(R.id.searchView1)
val textView: TextView = searchView.findViewById(androidx.appcompat.R.id.search_src_text)

这里有一些关于 为什么使用 androidX

的信息
© www.soinside.com 2019 - 2024. All rights reserved.