Левое пространство на панели инструментов с помощью SearchView android studio

Я пытаюсь добавить простой SearchView на панель инструментов в своем приложении. Все, что он отлично работает, рассчитывает на макет.

Это «пространство» между значком NavigationDrawer и SearchView . Если я задаю заголовок, пробел заполняется этой строкой, в противном случае – пустым.

Пустая строка:

Введите описание изображения здесь

С строкой в ​​заголовке:

Введите описание изображения здесь

Как удалить это раздражающее пустое пространство?

Редактировать:

Я использую в качестве базового кода пример NavigationDrawer из Android Studio

main.xml

  <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity" > <item android:id="@+id/action_search" android:icon="@android:drawable/ic_menu_search" android:title="Search" app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="always" /> </menu> 

app_bar_main.xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="ga.musicforyou.musicforyou.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <android.support.v7.widget.Toolbar android:id="@+id/toolbar" app:contentInsetEnd="0dp" app:contentInsetStart="0dp" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" /> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout> 

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:openDrawer="start"> <include layout="@layout/app_bar_main" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.NavigationView android:id="@+id/nav_view" app:theme="@style/ThemeOverlay.AppCompat.Dark" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:itemTextColor="#FFF" app:itemIconTint="#FFF" app:menu="@menu/activity_main_drawer" /> </android.support.v4.widget.DrawerLayout> 

Solutions Collecting From Web of "Левое пространство на панели инструментов с помощью SearchView android studio"

Панель инструментов простирается от FrameLayout, и вы можете поместить в нее виды. Как это:

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/primary_color"> <SearchView android:layout_width="wrap_content" android:layout_height="wrap_content" /> </android.support.v7.widget.Toolbar> 

Изменить: вы помещаете его в макет в качестве меню. Он всегда будет на правой стороне панели инструментов, потому что это меню. Если вы хотите иметь более прямой контроль над представлениями внутри панели инструментов, просто поместите его туда, как я показал вам.

Я установил actionBar.setDisplayHomeAsUpEnabled(true) в коде. Поэтому только добавление SearchView на панели инструментов не сработало для меня, и есть дополнительное пространство между Navigation Back и SearchView . У меня нет заголовка на Toolbar . Поэтому я настраивал всю панель инструментов следующим образом:

 <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:layout_alignParentTop="true" // If parent layout is RelativeLayout android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:contentInsetLeft="0dp" // This is important, app:contentInsetStart="0dp" // Otherwise there will be extra space on Left Side app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="horizontal"> <ImageView android:id="@+id/ivNavBack" android:layout_width="56dp" android:layout_height="56dp" android:background="@drawable/your_drawable" // Custom background (optional), if you want to have a press effect android:padding="16dp" android:src="@drawable/ic_nav_back" /> // You can set icon of your choice here <android.support.v7.widget.SearchView android:id="@+id/searchView" android:layout_width="match_parent" android:layout_height="wrap_content" android:queryHint="@string/search_view_hint" app:queryHint="@string/search_view_hint" /> </LinearLayout> </android.support.v7.widget.Toolbar> 

… & в вашей деятельности:

 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); SearchView searchView = (SearchView) toolbar.findViewById(R.id.searchView); searchView.onActionViewExpanded(); // Expands searchView by default // If this is not set, then you will see default search icon and you have to click it to expand SearchView. 

Теперь нет необходимости устанавливать actionBar.setDisplayHomeAsUpEnabled(true) в коде. Просто обработайте событие ivNavBack для него.

Введите описание изображения здесь