2

ユーザーが同じ画面でチャンネルリストとプログラムリストを表示できるAndroidアプリケーションを作成しています。例:-

チャンネルの画像が左側に、スケジュールされた番組が右側に表示され、ユーザーは番組リストを水平方向にスクロールできます。また、チャンネルが多数あるため、ユーザーはレイアウト全体を垂直方向にスクロールすることもできます。これはすべて実装されていますが、私が実行できないのは、ヘッダーが上部に固定されている必要があることです。

ヘッダーには2つの部分があります:1。画像のチャンネルリストの上の左側にあるシンプルな画像ビューで、上部が固定されていてスクロールできないようにする必要があります2.タイミングリストヘッダー(00:00、01:00、02:00など)上の画像ビューの右側とプログラムリストの上にあり、垂直方向にスクロール可能ではなく、水平方向にスクロール可能である必要があります。

以下は、レイアウトを表示するために使用しているコードです。これを実行できないのは、上記の2つのポイントだけです。ベタベタしたままではなく、残りのレイアウトで上下にスクロールします

        <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content">

                        <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content"
                                        android:layout_alignParentLeft="true" android:id="@+id/image_layout">
                                        <ImageView android:layout_gravity="center_vertical|center_horizontal" android:layout_width="wrap_content"
                                                   android:layout_height="wrap_content"  android:src="@drawable/tv_guide_channels" 
                                                   android:scaleType="fitCenter" android:id="@+id/channel_img_header"
                                                  android:layout_alignParentTop="true"/>
                                        <LinearLayout android:id="@+id/layout_to_add_channel_image" android:layout_width="wrap_content"
                                                      android:layout_height="wrap_content" android:orientation="vertical"
                                                      android:background="@color/White" android:layout_below="@id/channel_img_header" 
                                                      android:layout_alignParentBottom="true"/>
                       </RelativeLayout>

                       <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content"
                                       android:layout_alignParentRight="true" android:layout_toRightOf="@id/image_layout"
                                       android:id="@+id/programme_layout">
                                        <HorizontalScrollView android:layout_width="fill_parent" android:layout_height="wrap_content">
                                                        <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
                                                                    <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"
                                                                                    android:orientation="horizontal" android:id="@+id/table_header"
                                                                                    android:layout_alignParentTop="true">
                                                                    </LinearLayout>
                                                                    <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content"
                                                                                android:layout_below="@id/table_header">
                                                                    <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
                                                                                    <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"
                                                                                                    android:gravity="center_vertical" android:background="@color/greyblue"
                                                                                                    android:orientation="vertical" android:id="@+id/table_programme"
                                                                                                    android:layout_alignParentBottom="true">
                                                                                     </LinearLayout>    

                                                                        </RelativeLayout>
                                                                        </ScrollView>
                                                            </RelativeLayout>
                                         </HorizontalScrollView>
                       </RelativeLayout>

        </RelativeLayout>

<LinearLayout android:layout_height="2dip" android:layout_width="fill_parent" android:background="@color/Black"></LinearLayout>

4

3 に答える 3

1

私はこれが古い質問であることを知っています。同じものを探している他の人を助けるので、私の答えを投稿します。同じ目的でStickyScrollViewItems
ライブラリ を使用しています。scrollView内のすべてのビューに「スティッキー」のタグを付けて、上部を固定することができます。

于 2015-09-02T01:39:25.317 に答える
0

ヘッダービューをScrollViewから遠ざけてください。

編集済み

こんにちはAbhishekあなたの問題のインスピレーションによって私はそれを解決しようとしました。こちらで確認できます

于 2011-10-01T11:09:30.177 に答える
0

リンクに感謝しますが、私は解決策を見つけました:-

いつでもカスタムウィジェットを使用できますが、それほど怖くはありません:)私の場合、カスタムスクロールビューを使用し、xmlでパッケージ名+クラス名について言及していました。

例:

<org.vision_asia.utils.MyScrollView1
android:id="@+id/sv1"
android:layout_below="@id/channel_img_header"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:scrollbars="none">

<LinearLayout
    android:background="@color/White"
    android:id="@+id/layout_to_add_channel_image"
    android:layout_alignParentBottom="true"
    android:layout_below="@id/channel_img_header"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:orientation="vertical" />

そして、このScrollViewを他のスクロールビューと同期させて、ユーザーがこのスクロールビューをスクロールすると、同時に他のスクロールビューが、すべての要素が1つのスクロールビューの下にあるかのようにスクロールされる必要があるようにします。

public class MyScrollView1 extends ScrollView {

    public MyScrollView2 sv2;

    public MyScrollView1(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public MyScrollView1(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        // TODO Auto-generated method stub
        sv2.scrollTo(oldt, t);
        super.onScrollChanged(l, t, oldl, oldt);
    }
}

メインアクティビティでは、次のようにカスタムスクロールビューを呼び出す必要があります:-

sv1 = (MyScrollView1)channelsList.findViewById(R.id.sv1);
sv1.sv2 = sv2;

ここで、sv2は同期する必要があるスクロールビューです。

完全に同期するには、2つのカスタムスクロールビューが必要です

楽しみ

于 2011-10-04T12:06:20.020 に答える