如何使每个可滚动的布局适合屏幕宽度?

时间:2014-04-14 11:29:05

标签: android android-layout layout

我正在尝试制作具有可滚动layout的Android应用程序,可以垂直和水平滚动不同的其他layouts,我希望这些不同布局的每个布局都适合屏幕宽度,几乎适合高度,请看下图,说明我想要做的事情:

enter image description here

我只是尝试将这些布局的所有宽度高度设置为match_parent,并将所有这些布局放在 main_layout 中分配了match_parent个参数,然后我创建了一个Layout并将Layouts(4,1,5)放入其中并将此Layout放入ScrollView,然后我将 main_layout 布局放在包含三个布局(Layout3,Layout(4,1,5),Layout2)的HorizontalScrollView中,但这给了我一个受干扰的布局视图。

 <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.9" >

        <!-- just to give it 0.9 of the screen in order to give a space to the top layout (it takes 0.1 and the weight sum is 1) -->

        <LinearLayout
            android:id="@+id/main_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="horizontal" >

            <LinearLayout
                android:id="@+id/Layout3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >
            </LinearLayout>

            <ScrollView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scrollbars="none" >

                <LinearLayout
                    android:id="@+id/Layouts(4,1,5)"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:orientation="vertical" >

                    <LinearLayout
                        android:id="@+id/Layout4"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" >
                    </LinearLayout>

                    <LinearLayout
                        android:id="@+id/Layout1"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" >
                    </LinearLayout>

                    <LinearLayout
                        android:id="@+id/Layout5"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" >
                    </LinearLayout>
                </LinearLayout>
            </ScrollView>

            <LinearLayout
                android:id="@+id/Layout2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >
            </LinearLayout>
        </LinearLayout>
    </HorizontalScrollView>

2 个答案:

答案 0 :(得分:1)

我试试这个:

RelativeLayout代替ScrollView

LinearLayout的所有match_parent,以编程方式进行转换:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int sw = size.x; // screen width
int sh = size.y; // screen height

LinearLayout lay2 = (LinearLayout) findViewById(R.id.Layout2);
lay2.setTranslationX = sw;

LinearLayout lay3 = (LinearLayout) findViewById(R.id.Layout3);
lay2.setTranslationX = -sw;

LinearLayout lay4 = (LinearLayout) findViewById(R.id.Layout4);
lay2.setTranslationY = -sh;

LinearLayout lay5 = (LinearLayout) findViewById(R.id.Layout5);
lay2.setTranslationY = sh;

然后触摸RelativeLayout上可以控制滑动,改变其位置的侦听器。

答案 1 :(得分:0)

我在link中找到了我需要的所有内容,它提供了一个示例项目源代码,它以一种简单有效的方式依赖于Android碎片来实现我所需的方法(但这种方式只能提供水平导航)。 所以,在搜索之后,我发现这个library提供了两个方向(垂直和水平)的过程