Макет внутри horizontalScrollView, который является размером экрана
Я новичок в android и искал решение для этого, но пока не повезло. Я хотел бы создать макет, что-то вроде изображения ниже.
Я хотел бы иметь linearLayout, который является размером экрана. Затем у вас есть еще один linearLayout, который также является размером экрана, но с экрана. Затем я могу прокручивать между двумя виртуальными "экранами".
![введите описание изображения здесь]()
Есть интересная статья, в которой объясняется, как расширить класс scrollView, чтобы я мог получить отличный эффект привязки, поэтому, если я смогу заставить это работать, мое приложение будет очень похоже на прокрутку между домашними экранами.
Я читал о весах, а также о scrollView fillViewport = "true". Я боюсь, что я не понимаю, как это можно использовать с horizontalScrollView, чтобы линеарные заливки заполняли экран. Я попытался использовать всевозможные комбинации fill_parent и wrap_content, но безрезультатно.
Как я вижу, эта функциональность не повредит переносимости приложения между устройствами, которые имеют разные экраны, пока я создаю вспомогательные представления (элементы на каждом "экране" ) с учетом изменчивости экрана.
Вот простой пример XML, который я пытался:
<HorizontalScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/HorizontalScrollView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fillViewport="true">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/txtTestBox"
>
</EditText>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Button 1"
/>
</LinearLayout>
</LinearLayout>
</HorizontalScrollView>
К сожалению, это даже не приближается к тому, что я ищу. Надеюсь, это можно сделать...
Спасибо за любую помощь или предложения.
Ответы
Ответ 1
Горизонтальное представление прокрутки может масштабироваться бесконечно бок о бок, поэтому "Fill Parent" скорее всего не будет работать так, как вы ожидаете от внутренних макетов. Вы пытались явно указать ширину внутренних макетов?
Что-то вроде:
<HorizontalScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/HorizontalScrollView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fillViewport="true">
<LinearLayout
android:orientation="horizontal"
android:layout_width="400dp"
android:layout_height="fill_parent">
.....
</LinearLayout>
</HorizontalScrollView>
Ответ 2
Есть ли конкретная причина, по которой вам нужно иметь практически 2 экрана внутри одного? Почему бы просто не разделить их? Вы можете расширить GestureDetector
, чтобы при появлении жестов прокрутки он автоматически "привязывался" к следующему экрану.
Ответ 3
См. здесь. Решение заключалось в использовании android:fillViewport="true"
в ScrollView.
не нужно исправлять ширину LinearLayout.
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:fillViewport="true"
android:orientation="vertical"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
//create your views
</LinearLAyout>
</HorizontalScrollView>