2

開始タグ (親タグは ) のレイアウトがあります

<scroll view  
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

後で、多くの images 、 textView 、 Edit text など、そして最後にリストビューがあります。私は、リストビューの高さを私に規定されているように230dpと定義しました。問題は、レイアウト全体がうまくスクロールしていることですが、リストビュー内のコンテンツは個別にスクロールしていません。これがxmlの外観です...

    <ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     > 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:orientation="vertical" >
    <TextView android:layout_width="fill_parent"
         android:layout_height="50dp"
         android:text="BISCOOT"
         android:textSize="25dp"
         android:background="@drawable/item_bg_light"
         android:textColor="@android:color/white"
         android:gravity="center"/>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" android:layout_width="fill_parent" 
     android:layout_height="200dp" android:background="#ff000000">

      <ImageSwitcher android:id="@+id/switcher1" android:layout_width="fill_parent" 
      android:layout_height="200dp"  
      android:layout_alignParentLeft="true" android:layout_alignParentRight="true" >
      </ImageSwitcher> 
        <ProgressBar
              android:id="@+id/progressBar2"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"  android:layout_centerHorizontal="true"
               />
        <ImageButton android:id="@+id/imageButton1" android:layout_width="wrap_content"
       android:layout_height="wrap_content" android:layout_alignParentRight="true" 
       android:layout_centerVertical="true" android:src="@android:drawable/ic_media_ff" /> 

        <ImageButton android:id="@+id/imageButton2" android:layout_width="wrap_content" 
      android:layout_height="wrap_content" android:layout_alignParentLeft="true" 
      android:layout_alignTop="@+id/imageButton1" android:src="@android:drawable/ic_media_rew" /> 
  </RelativeLayout>
    <TextView android:layout_width="fill_parent"
         android:layout_height="30dp"
         android:text="Latest headLines"
         android:background="@drawable/item_bg_light"
         android:textColor="@android:color/white"
         android:gravity="center"/>
    <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />
         <LinearLayout android:orientation="vertical"
             android:layout_width="fill_parent"            
             android:layout_height="fill_parent">
      <ListView 
        android:id="@android:id/list" 
        android:layout_width="fill_parent" 
        android:scrollbarFadeDuration="0" 
        android:scrollbarStyle="outsideOverlay" 
        android:smoothScrollbar="true" 
          android:layout_height="260dp">
     </ListView>
    </LinearLayout>



    <!-- 
    <TextView android:layout_width="fill_parent"
         android:layout_height="30dp"
         android:text="Heroin On the Rocks"
         android:background="@drawable/item_bg_light"
         android:textColor="@android:color/white"
         android:gravity="center"/>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" android:layout_width="fill_parent" 
     android:layout_height="200dp" android:background="#ff000000">

      <ImageSwitcher android:id="@+id/switcher2" android:layout_width="fill_parent" 
      android:layout_height="200dp"  
      android:layout_alignParentLeft="true" android:layout_alignParentRight="true" /> 

        <ImageButton android:id="@+id/imageButton3" android:layout_width="wrap_content"
       android:layout_height="wrap_content" android:layout_alignParentRight="true" 
       android:layout_centerVertical="true" android:src="@android:drawable/ic_media_ff" /> 

        <ImageButton android:id="@+id/imageButton4" android:layout_width="wrap_content" 
      android:layout_height="wrap_content" android:layout_alignParentLeft="true" 
      android:layout_alignTop="@+id/imageButton1" android:src="@android:drawable/ic_media_rew" /> 
  </RelativeLayout>
  -->




<TextView android:layout_width="fill_parent"
         android:layout_height="30dp"
         android:text="Watch Movies"
         android:background="@drawable/item_bg_light"
         android:textColor="@android:color/white"
         android:gravity="center"/>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="100dp" android:orientation="horizontal"
    android:weightSum="6"
    >
        <ImageView 

            android:layout_height="100dp"
            android:layout_width="wrap_content" android:layout_weight="1"
           android:layout_marginLeft="2dp" android:layout_marginRight="2dp"
            android:id="@+id/watchmoviesimg1"
            />
         <ImageView android:layout_height="100dp"
            android:layout_width="wrap_content" android:layout_weight="1"
           android:layout_marginLeft="2dp" android:layout_marginRight="2dp"
            android:id="@+id/watchmoviesimg2"/>
          <ImageView android:layout_height="100dp" android:layout_weight="1"
            android:layout_width="wrap_content"
           android:layout_marginLeft="2dp" android:layout_marginRight="2dp"
            android:id="@+id/watchmoviesimg3"/>

          <ProgressBar
              android:id="@+id/progressBar3"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_gravity="center" />

           <ImageView android:layout_height="100dp" android:layout_weight="1"
            android:layout_width="wrap_content"
           android:layout_marginLeft="2dp" android:layout_marginRight="2dp"
            android:id="@+id/watchmoviesimg4"/>
            <ImageView android:layout_height="100dp" android:layout_weight="1"
            android:layout_width="wrap_content"
           android:layout_marginLeft="2dp" android:layout_marginRight="2dp"
            android:id="@+id/watchmoviesimg5"/>
             <ImageView android:layout_height="100dp" android:layout_weight="1"
            android:layout_width="wrap_content"
           android:layout_marginLeft="2dp" android:layout_marginRight="2dp"
            android:id="@+id/watchmoviesimg6"/>


    </LinearLayout>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="200dp" 
    android:orientation="vertical"
    >
              <TextView android:layout_width="fill_parent"
         android:layout_height="30dp"
         android:text="Photo Stories"
         android:background="@drawable/item_bg_light"
         android:textColor="@android:color/white"
         android:gravity="center"/>

              <ProgressBar
                  android:id="@+id/progressBar4"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center" />

               <ImageView 
                   android:id="@+id/photostoryimageview1"
                   android:layout_height="200dp" android:layout_weight="1"
            android:layout_width="fill_parent"
            />
               </LinearLayout>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="200dp" 
    android:orientation="vertical"
    >
                 <TextView android:layout_width="fill_parent"
         android:layout_height="30dp"
         android:text="Star Special"
         android:background="@drawable/item_bg_light"
         android:textColor="@android:color/white"
         android:gravity="center"/>

                 <ProgressBar
                     android:id="@+id/progressBar5"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content" 
                     android:layout_gravity="center"/>

               <ImageView 
                   android:id="@+id/starSpecialimageView1"
                   android:layout_height="200dp" android:layout_weight="1"
            android:layout_width="fill_parent"
            />
               </LinearLayout>

</LinearLayout>
</ScrollView>
4

7 に答える 7

6

単純に、ScrollViewレイアウトから を削除します。そして、LinearLayoutを親にします。そして、アプリを実行してみてください。リストをスクロールします。

ListViewクラスは独自のスクロールを実装し、ジェスチャはすべて親によって処理されるため、ジェスチャを受信しないため、何らかのScrollView方法でレイアウトを簡素化することを強くお勧めします。たとえば、スクロールしたいビューをListViewヘッダーまたはフッターとして追加できます。

これを見てください

アップデート

2 つの子を持つ 1 つの親レイアウトを使用します。そして、1 つのレイアウトにコンテンツを含める必要がScrollViewあります。そして、別のレイアウトには、このListViewようなTryが含まれています。彼はそのようなことをしました。

于 2012-09-05T07:06:43.747 に答える
5

これを追加するだけで動作します。

listView.setOnTouchListener(new View.OnTouchListener() {
        // Setting on Touch Listener for handling the touch inside ScrollView
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // Disallow the touch request for parent scroll on touch of child view
            v.getParent().requestDisallowInterceptTouchEvent(true);
            return false;
        }
    });
于 2014-11-18T10:01:00.843 に答える
1

以下のクラスを試してください。ScrollView 内で ListView を操作すると役立つ場合があります。

ユーティリティ.java

import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ListAdapter;
import android.widget.ListView;

public class Utility {
        public static void setListViewHeightBasedOnChildren(ListView listView) {
              ListAdapter listAdapter = listView.getAdapter();
            if (listAdapter == null) {
            // pre-condition
                  return;
            }

            int totalHeight = listView.getPaddingTop() + listView.getPaddingBottom();
            for (int i = 0; i < listAdapter.getCount(); i++) {
                 View listItem = listAdapter.getView(i, null, listView);
                 if (listItem instanceof ViewGroup) {
                    listItem.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                 }
                 listItem.measure(0, 0);
                 totalHeight += listItem.getMeasuredHeight();
            }

            LayoutParams params = listView.getLayoutParams();
            params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
                      listView.setLayoutParams(params);
        }
     }

最後に、アダプターをリストビューに設定した直後にこの行を使用します - Utility.setListViewHeightBasedOnChildren(your_listview);

于 2016-11-17T04:59:40.130 に答える
1

1 つのレイアウトで ScrollViw と ListView を実行することはできません。ScrollView を配置した場合、ListView は機能しません。ScrollView を配置しない場合、ListView はスクロールします。

アップデート

スクロールビュー内のリストビューまたはリストビュー内のスクロールビューであっても、両方が機能します。それに応じてそのタッチを処理する必要があります。

于 2012-09-05T11:01:27.610 に答える
1

ListView クラスは独自のスクロールを実装し、ジェスチャーはすべて親 ScrollView によって処理されるため、ジェスチャーを受け取らないため、ListView を ScrollView 内に配置しないでください。

于 2012-09-05T07:06:59.440 に答える
0

リストビューもスクロールし、リストビューのスクロールとスクロールビューのスクロールの間に同期の問題が発生するため、スクロールビューにリストビューを追加することはできません。CustomList ビューを作成し、このメソッドを追加できます。

@Override public boolean onInterceptTouchEvent(MotionEvent ev)
{
    /*
     * Prevent parent controls from stealing our events once we've gotten a touch down
     */
    if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) {
        ViewParent p = getParent();
        if (p != null) {
            p.requestDisallowInterceptTouchEvent(true);
        }
    }
    return false;
}
于 2014-12-18T05:55:50.173 に答える