Как заставить searchview заполнить оставшееся пространство? - PullRequest
0 голосов
/ 28 мая 2018

Я хочу отобразить две иконки и вид поиска на панели действий моего приложения.Я использую поддержку Toolbar и тему NoActionBar.Я пытаюсь поместить один значок с левой стороны, а другой - с правой стороны, а затем поставить SearchView между ними, занимая все оставшееся пространство между ними.

Пользовательские настройки, примененные к SearchView:

  • app:iconifiedByDefault="false" (так что представление расширяется по умолчанию)
  • app:searchIcon="@drawable/search_action_bar_icon" (значок поиска)

Что я уже пробовал:

1.Стилизация не применяется:

В этом случае поисковое представление недостаточно растягивается, поскольку оно по умолчанию установило максимальную ширину.

The appearance of the action bar, first attempt

2.Максимальная ширина увеличилась

Затем я увеличил максимальную ширину до очень высокого значения (10000dp), чтобы она могла свободно расширяться.Если для ширины установлено значение match_parent или wrap_content, окно поиска заняло все оставшееся пространство справа, поэтому вторая иконка ушла за пределы экрана.

The appearance of the action bar, first attempt

3.Используя layout_weigth

Используя инспектор макета, я обнаружил, что группа представлений, содержащая элементы меню, - это ActionMenuView, суперклассом которого является LinearLayoutCompat.Предлагаемое решение для достижения желаемого результата в LinearLayout - установить ширину среднего потомка на 0dp и его layout_weight на 1, в то время как другие дочерние элементы сохраняют фиксированную ширину.Однако ширина SearchView составляет всего 0dp, что, возможно, означает, что ширина ActionMenuView установлена ​​на wrap_content - честно говоря, я не уверен в этом.

The appearance of the action bar, third attempt

Итак, что для этого нужно сделать:

The desired outcome

1 Ответ

0 голосов
/ 30 мая 2018

Попробуйте это

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingRight="10dp"
    android:orientation="horizontal">

    <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@mipmap/ic_launcher" />

    <android.support.v7.widget.SearchView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_weight="1" />

    <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@mipmap/ic_launcher" />
</LinearLayout>

...