我正在尝试创建一个 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 做同样的事情而不出现任何警告和错误?
我建议将 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
的信息