其他分享
首页 > 其他分享> > 如何在Android中使用滚动视图

如何在Android中使用滚动视图

作者:互联网

我为两种不同的布局使用了两个滚动视图.这两种布局都在线性布局中.

这是我的XML文件.我不知道为什么ScrollView不适合我

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="horizontal" >

    <LinearLayout
            android:id="@+id/flightResultData"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="8dp"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:orientation="horizontal" >

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="vertical" >

                        <ImageView
                            android:id="@+id/onewayflightLogo"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="3dp"
                            android:src="@drawable/spicejet" />

                        <TextView
                            android:id="@+id/onewayflightName"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="SpiceJet" />

                        <TextView
                            android:id="@+id/onewayflightNumber"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="9W - 496" />
                    </LinearLayout>

                    <LinearLayout
                        android:layout_marginTop="8dp"
                        android:layout_width="fill_parent"
                        android:layout_height="match_parent"
                        android:orientation="vertical" >

                        <TextView
                            android:id="@+id/onewayflightTime"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="5dp"
                            android:minLines="1"
                            android:text="06:00 - 7:05"
                            android:textSize="12dp" />

                        <TextView
                            android:id="@+id/onewayflightDuration"
                            android:layout_width="fill_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="5dp"
                            android:minLines="1"
                            android:text="1h 35m | Non Stop"
                            android:textSize="10dp" />
                        <TextView
                            android:id="@+id/onewayflightAmount"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="5dp"
                            android:minLines="1"
                            android:text="Rs 200000"
                            android:textSize="12dp" />
                    </LinearLayout>
                </LinearLayout>
                <View
                    android:layout_width="1dp"
                    android:layout_height="60dp"
                    android:background="@android:color/darker_gray" />
               <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:orientation="horizontal" >

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="vertical" >

                        <ImageView
                            android:id="@+id/retrunflightLogo"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="3dp"
                            android:src="@drawable/spicejet" />

                        <TextView
                            android:id="@+id/retrunflightName"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="SpiceJet" />

                        <TextView
                            android:id="@+id/retrunflightNumber"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="9W - 496" />
                    </LinearLayout>

                    <LinearLayout
                        android:layout_marginTop="8dp"
                        android:layout_width="fill_parent"
                        android:layout_height="match_parent"
                        android:orientation="vertical" >

                        <TextView
                            android:id="@+id/retrunflightTime"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="5dp"
                            android:minLines="1"
                            android:text="06:00 - 7:05"
                            android:textSize="12dp" />

                        <TextView
                            android:id="@+id/retrunflightDuration"
                            android:layout_width="fill_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="5dp"
                            android:minLines="1"
                            android:text="1h 35m |Non Stop"
                            android:textSize="10dp" />

                        <TextView
                            android:id="@+id/retrunflightAmount"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="5dp"
                            android:minLines="1"
                            android:text="Rs 200000"
                            android:textSize="12dp" />
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
</LinearLayout>

这是我的主要布局,我通过循环动态地膨胀我的上面的xml

<LinearLayout
        android:id="@+id/flightResultData"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/sortFlightLayouts"
        android:layout_marginLeft="8dp"
        android:orientation="vertical" >
</LinearLayout>

在我的活动代码中,我这样做:

void setTestResultData(){

    flightResult=(LinearLayout)findViewById(R.id.flightResultData);
    LinearLayout.LayoutParams flightDetailsLayout = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    LinearLayout.LayoutParams forUnderLine = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
    forUnderLine.setMargins(0,0, 0, 0);
    for(int i=0;i < 13;i++){
        LinearLayout flightInformations=(LinearLayout)inflater.inflate(R.layout.flight_details_layout, null);
        flightResult.addView(flightInformations);
    }
}

解决方法:

我认为你需要一个简单的双栏组织:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <!-- stuff goes here that should appear above the scrolling areas -->

    <ScrollView
        android:id="@+id/left_side_scroller"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" >

        <!-- contents of left side go here -->
    </ScrollView>

    <ScrollView
        android:id="@+id/right_side_scroller"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" >

        <!-- contents of right side go here -->
    </ScrollView>

    <!-- stuff goes here that should appear below  the scrolling areas -->
</LinearLayout>

或者(也许更好)看起来你应该使用两个ListView元素而不是两个ScrollView元素.每个ListView都具有与上面显示的ScrollView相同的布局参数.由于ListView在内部管理滚动,因此您根本不需要ScrollView.

此外,您可能希望整个布局填满屏幕,“过滤器”和“排序”元素始终位于底部.要实现此效果,顶级布局应该具有android:layout_height =“fill_parent”而不是“wrap_content”.此外,可滚动区域应该具有android:layout_height =“0dp”和非零权重(他们已经做过).

标签:android,android-layout,android-scroll,android-scrollview
来源: https://codeday.me/bug/20191003/1850462.html