Как равномерно разместить элементы в горизонтальном представлении, если содержимое меньше контейнера

#android

Вопрос:

Я пытаюсь заставить a HorizontalScrollView вести себя как a LinearLayout с точки зрения растягивания его детей, если содержимое HorizontalScrollView недостаточно широкое для прокрутки.

В приведенном ниже макете элементы расположены с промежутками между ними, что именно так и должно выглядеть, если экран широкий. Но в этом макете нет прокрутки, если ширина экрана слишком мала или шрифт слишком большой.

     <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:id="@ id/appearance_row_0"
            android:layout_width="wrap_content"
            android:layout_gravity="center"
            android:layout_height="wrap_content"
            android:layout_marginVertical="12dp"
            android:orientation="horizontal" >
            <include layout="@layout/appearance_fragment_theme_button"/>
            <include layout="@layout/appearance_fragment_divider"/>
            <include layout="@layout/appearance_fragment_theme_button"/>
            <include layout="@layout/appearance_fragment_divider"/>
            <include layout="@layout/appearance_fragment_theme_button"/>
            <include layout="@layout/appearance_fragment_divider"/>
            <include layout="@layout/appearance_fragment_theme_button"/>
        </LinearLayout>
    </LinearLayout>

 

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

При расположении ниже возможна прокрутка, но элементы размещаются в центре, без какого-либо пространства между элементами.

     <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:id="@ id/appearance_row_0"
            android:layout_width="wrap_content"
            android:layout_gravity="center"
            android:layout_height="wrap_content"
            android:layout_marginVertical="12dp"
            android:orientation="horizontal" >
            <include layout="@layout/appearance_fragment_theme_button"/>
            <include layout="@layout/appearance_fragment_divider"/>
            <include layout="@layout/appearance_fragment_theme_button"/>
            <include layout="@layout/appearance_fragment_divider"/>
            <include layout="@layout/appearance_fragment_theme_button"/>
            <include layout="@layout/appearance_fragment_divider"/>
            <include layout="@layout/appearance_fragment_theme_button"/>
        </LinearLayout>
    </HorizontalScrollView>
 

элементы размещаются в центре, но при необходимости они прокручиваются

Есть ли способ объединить оба поведения, а именно разместить пространство между элементами, если экран достаточно широк для размещения содержимого, и прокручивать, если экран недостаточно широк?

Спасибо.

Комментарии:

1. Почему бы вам не использовать space фиксированное пространство между вашими предметами? в этом случае у вас всегда будет одинаковое пространство между вашими предметами. Если экран достаточно широкий, все элементы отображаются без необходимости прокрутки. В противном случае, HorizontalScrollView позволяет пользователю прокручивать. Это то, что ты ищешь?

2. Я мог бы добиться этого, используя представление переработчика. Поскольку в вопросе не было представления переработчика, разместите ссылку на GitHub для реализации, а не ответ здесь — github.com/Abhimanyu14/auto-spacing-horizontal-scroll-view . P. S: Это работает только в том случае, если размер дочерних представлений одинаков и фиксирован. Дайте мне знать, подходит ли это для вашей цели.