我想在我的应用程序中自定义搜索视图小部件的“edittext”。我想以编程方式设置其背景可绘制对象。我还想以编程方式添加标志 android:imeOptions="flagNoExtractUi"
,以便在景观模式下,软键盘只会覆盖屏幕的一半。
任何人都知道如何在搜索视图“edittext”上进行此自定义?
我想在我的应用程序中自定义搜索视图小部件的“edittext”。我想以编程方式设置其背景可绘制对象。我还想以编程方式添加标志 android:imeOptions="flagNoExtractUi"
,以便在景观模式下,软键盘只会覆盖屏幕的一半。
任何人都知道如何在搜索视图“edittext”上进行此自定义?
这就是我所做的。我abs_search_view.xml
在 action bar sherlock 库中学习并了解到它R.id.search_plate
代表一个 LinearLayour。LinearLayout 的第一个孩子是一个视图,其类是com.actionbarsherlock.widget.SearchView$SearchAutoComplete
. 因此,我检索了第一个孩子并将其转换为com.actionbarsherlock.widget.SearchView.SearchAutoComplete
,进行了空检查,然后searchText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI)
按照 Ahmend 在评论中的建议设置了 ime 选项。希望这可以帮助某人。
public static void styleSearchView(SearchView searchView, Context context) {
LinearLayout searchPlate = (LinearLayout) searchView
.findViewById(R.id.abs__search_plate);
// TODO
// searchPlate.setBackgroundResource(R.drawable.your_custom_drawable);
if (searchPlate != null)
((com.actionbarsherlock.widget.SearchView.SearchAutoComplete) searchPlate
.getChildAt(0))
.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
AutoCompleteTextView searchText = (AutoCompleteTextView) searchView
.findViewById(R.id.abs__search_src_text);
if (searchText != null)
searchText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
// TODO
// searchText.setHintTextColor(context.getResources().getColor(R.color.your_custom_color));
}