[英]Android: Add a custom button to SearchView Widget in Actionbar
我想為SearchView小部件添加一個自定義按鈕。
通過search_view
布局文件的源代碼,我發現它有一個包含提交按鈕和語音按鈕的LinearLayout
( submit_area
)。
所以我在submit_area中添加了一個動態按鈕。 但它沒有顯示我動態添加的按鈕,因為如果未啟用提交按鈕或語音按鈕,則submit_area
將不可見。 因此,如果我動態添加任何內容都沒關系。
SearchView searchView = (SearchView) menuItem.getActionView();
int
submit_areaId = searchView.getContext().getResources()
.getIdentifier("android:id/submit_area", null, null);
Button btnScan = new Button(getActivity());
btnScan.setText(getString(R.string.scan)); submitArea.addView(btnScan);
但是,如果我只是設置了提交按鈕,那么它會顯示提交按鈕以及我的動態按鈕,如附圖所示。
我只是想顯示我的動態按鈕。 任何線索如何實現?
searchView.setSubmitButtonEnabled(false);
LinearLayout linearLayoutOfSearchView = (LinearLayout) searchView.getChildAt(0);
Button yourButton = new Button(mContext); // and do whatever to your button
linearLayoutOfSearchView.addView(yourButton);
由於私有的SearchView
類方法正在設置submit_area
Visibility.Gone
因此我們無法做很多事情。
一個快速的骯臟技巧是設置默認按鈕,然后將其寬度和高度設置為0.設置Visibility
不起作用,因此必須設置高度/寬度。
我啟用了搜索按鈕,然后將其高度/寬度設置為零。
int submit_areaId = searchView.getContext().getResources().getIdentifier("android:id/submit_area", null, null);
ImageView submitImage = (ImageView) searchView.findViewById(search_go_btnId);
searchView.setSubmitButtonEnabled(true);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0, 0);
submitImage.setLayoutParams(layoutParams);
現在,SearchView將顯示您在submit_area中添加的任何內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.