2016-10-13 64 views
2

我想在工具欄更改搜索查看的方向,這是我嘗試在closeButton使用RTL方向的android.support.v7.widget.SearchView

layout.xml

android:layoutDirection="rtl" 

menu.xml文件

<item android:id="@+id/action_search" 
    android:title="@string/search_hint" 
    android:icon="@mipmap/ic_search_icon" 
    app:showAsAction="ifRoom|collapseActionView" 
    app:actionViewClass="android.support.v7.widget.SearchView" /> 

Java代碼:

 MenuItem searchItem = menu.findItem(R.id.action_search); 
     SearchView mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem); 

     getSupportActionBar().setCustomView(MenuItemCompat.getActionView(searchItem)); 

     mSearchView.setInputType(InputType.TYPE_CLASS_TEXT); 
     mSearchView.setQueryHint(getString(R.string.search_hint)); 

     mSearchView.setGravity(Gravity.RIGHT); 
     mSearchView.setTextDirection(View.TEXT_DIRECTION_RTL);  
     mSearchView.setTextAlignment(View.TEXT_ALIGNMENT_GRAVITY); 

     mSearchView.setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 
     mSearchView.setLayoutParams(new ActionBar.LayoutParams(Gravity.RIGHT)); 

SearchView in actionBar Wrong position of closeButton

這是結果,我的成功添加了搜索查看工具欄和RTL是現在。但問題是「X」(closeButton)的位置是錯誤的,位置必須在左邊。

+0

可以使用自定義佈局工具欄。 [這可能對你有所幫助](http://stackoverflow.com/questions/15518414/how-can-i-implement-custom-action-bar-with-custom-buttons-in-android) –

+0

@KaushalideSilva我的問題是在SearchView中不在工具欄中 – user1738413

回答

1

在您的應用程序中支持Rtl。您必須在您的manifest.xml中設置android:supportsRtl="true"

而且最重要的一點要記住

更改所有應用程序的"Left/Right"佈局屬性來Start/End

在你的情況下,你正在設置。

mSearchView.setGravity(Gravity.RIGHT); 

所以將其更改爲

mSearchView.setGravity(Gravity.END); 

在這裏也改變這種

mSearchView.setLayoutParams(new ActionBar.LayoutParams(Gravity.RIGHT)); 

mSearchView.setLayoutParams(new ActionBar.LayoutParams(Gravity.END)); 
+1

我已經將'android:supportsRtl =「true」'添加到了我的manifest.xml中,並且我只是將'Gravity.RIGHT'替換爲'Gravity.END'。但與X按鈕位置相同的問題 – user1738413