2016-10-13 2 views
2

Я пытаюсь изменить направление SearchView в панели инструментов, и это моя попыткаИспользуя направление RTL в closeButton из 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

И это результат, я успешно добавил SearchView на панели инструментов и 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 в вашем приложении. вы должны установить android:supportsRtl="true" в свой файл manifest.xml.

И самое главное держать в виде

Изменения всех свойств "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

Смежные вопросы