簡體   English   中英

Android:在Actionbar中為SearchView Widget添加自定義按鈕

[英]Android: Add a custom button to SearchView Widget in Actionbar

我想為SearchView小部件添加一個自定義按鈕。

通過search_view布局文件的源代碼,我發現它有一個包含提交按鈕和語音按鈕的LinearLayoutsubmit_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM