Идея состоит в том, что вы должны создать представление, которое заполняет все доступное пространство, которое создается с помощью match_parent в layout_width.
затем вы сообщаете представлению, что оно начнется там, где заканчивается первый значок, и закончится там, где заканчивается второй значок, что сделано с layout_toEndOf и layout_toStartOf (вы пропустили этот последний)
наконец, поскольку вы ссылаетесь на имя, которое еще не было объявлено в этой области, вы должны назвать второе имя как "@ + id / icon_2", и в объявлении вашего представления установите имя, не создавая новое id "@ id / icon_2", в конце ваш код будет выглядеть так:
<android.support.v7.widget.SearchView
android:id="@+id/action_search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/icon_1"
android:layout_toStartOf="@+id/icon_2"
android:background="@color/colorTransparent"
android:backgroundTint="@color/colorTransparent"
android:focusedByDefault="false"
app:closeIcon="@null"
app:iconifiedByDefault="false"
app:searchHintIcon="@null"
app:searchIcon="@null">
</android.support.v7.widget.SearchView>
<ImageButton
android:id="@id/icon_2"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_toEndOf="@id/action_search"
android:layout_centerVertical="true"
android:layout_alignParentEnd="true"
android:layout_marginEnd="15dp"
android:adjustViewBounds="true"
android:background="@android:color/transparent"
android:scaleType="fitCenter"
android:src="@drawable/ico_2" />