7

我的問題與SearchView wrong alignmentSearchView positions when expanded in ActionBar密切相關,但發佈在那裏的答案不起作用。如何在ActionBar的右側保持擴展的SearchView(使用自定義圖標時)?

所以,我使用的是在SearchViewAction Bar

<item android:id="@+id/action_search" 
    android:icon="@drawable/navi_search" 
    android:title="@string/action_search" 
    android:showAsAction="ifRoom|collapseActionView" 
    android:actionViewClass="android.widget.SearchView" 
    /> 

它看起來像這樣在默認情況下(右上角,旁邊溢出菜單):

enter image description here

問題是,擴展時,我希望SearchView保持在右側,但它會移動到左側邊緣,Home按鈕旁邊(應用程序圖標)。

我試圖改變showAsAction要麼這些(as suggested here):

android:showAsAction="ifRoom" 
android:showAsAction="always" 

...這確實在膨脹時固定取向,但自定義圖標在摺疊狀態時,會丟失

enter image description here

而且,這樣的東西在菜單上和android:layout_alignParentRight="true"android:layout_centerInParent="true" 210沒有效果。

任何想法?

我靶向Android 4.0及以上:

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /> 

回答

8

好吧,我發現了一種方法:

onCreateOptionsMenu(),標準菜單充氣東西后,設置 ActionBar.LayoutParamsGravity.RIGHTSearchView實例:

@Override 
public boolean onCreateOptionsMenu(Menu menu) {   
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_activity_actions, menu); 

    // ... 

    // Find the SearchView; make it aligned to right, also in expanded mode: 
    MenuItem item = menu.findItem(R.id.action_search); 
    SearchView search = (SearchView) item.getActionView(); 
    search.setLayoutParams(new ActionBar.LayoutParams(Gravity.RIGHT)); 
} 

(在菜單定義XML中,我仍然使用android:showAsAction="ifRoom|collapseActionView"。)

現在SearchView會在右側,圖標所在的位置以及自定義圖標仍在使用中打開。

+0

人們可能會認爲'安卓重力=「右」'上搜索查看''在菜單XML將做到這一點了,但是至少在我的測試設備也沒有。 – Jonik

+0

它真的有用嗎?怎麼樣鑄造異常? –

+0

是的,它在Android 4.0+上運行良好。這種方法你會得到一個例外嗎?考慮問一個新問題。 – Jonik

2

嘗試編輯這一行

android:showAsAction="ifRoom|collapseActionView" 

到:

android:showAsAction="ifRoom" 

它會對準的EditText的權利。

+0

通過閱讀*整個*問題,你會看到我已經嘗試過。 (雖然它固定了對齊,但它以某種方式導致我的自定義圖標丟失。) – Jonik

相關問題