1

まず第一に、私の英語についてお詫びしたいと思います。私はロシア出身で、Google 翻訳者が私の問題を説明するのに役立つことを願っています =)。だから問題は - 私は ScrollView 内に gridView と ExpandableListView を持っています。私のプロジェクトでは、カテゴリ(「エレクトロニクス」、「ホーム&ガーデン」、「モーター」など)を含むビジネスカタログがあり、最も人気のあるカテゴリをgridViewに入れ(そしてアイコンを追加して)スクロールビューを作成するだけですシングルレイアウトのようにスクロールします。しかし、私の scrollView はそれをスクロールしません。どうすればそれができますか?

my bizCatalog Actvivty:

ここに画像の説明を入力

私のbizCatalogレイアウト:

<?xml version="1.0" encoding="utf-8"?>
<ViewSwitcher xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bizSwitcher"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <ProgressBar
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Загрузка списка..." />
</LinearLayout>

<ScrollView
    android:id="@+id/bizScrollView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true" >

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

        <GridView
            android:id="@+id/bizFavoritesGrid"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:columnWidth="90dp"
            android:gravity="center"
            android:horizontalSpacing="10dp"
            android:numColumns="auto_fit"
            android:paddingTop="10dp"
            android:stretchMode="columnWidth"
            android:verticalSpacing="10dp" >
        </GridView>

        <ExpandableListView
            android:id="@+id/bizList"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:cacheColorHint="#00000000" >
        </ExpandableListView>
    </LinearLayout>
</ScrollView>

</ViewSwitcher>   
4

4 に答える 4

1

dispatchTouchEvent(MotionEvent event)スクロールビューの関数をオーバーライドすることで、上記を実現できます。この関数内で、イベントを子リストビューに送信します。次に、このようにリストビューのdispatchTouchEventをオーバーライドする必要もあります

  int[] location = new int[2];
  listView.getLocationOnScreen(location);

  if (e.getRawX() > location[0] && e.getRawX()< location[0] + listView.getWidth() &&
   e.getRawY() > location[1] && e.getRawY() < location[1] + listView.getHeight())
  {
    int[] checkListLoc = new int[2];

    listView.getLocationOnScreen(checkListLoc);
    var offset = checkListLoc[1] - (e.getRawY() - e.GetY());
    e.OffsetLocation(0, 0 - offset);

    listView.dispatchTouchEvent(e);
    return true;
 }
 return base.dispatchTouchEvent(e);
于 2013-09-26T04:36:27.353 に答える
0

GridView の代わりに、GridLayoutを使用します。

于 2013-09-26T04:30:35.123 に答える
0

Android のガイドラインに従って、あるスクロール可能なレイアウトを別のレイアウトに使用することはできません。ScrollView を使用している場合、その中で ListView を使用することはできません。両方のレイアウトがスクロール可能であるためです。そのため、いずれかを使用してスクロールしてください。

于 2013-09-26T04:33:45.993 に答える
0

最初にスクロール ビューを削除します。リストビューを使用し、グリッドビューをリストビューのフッタービューとして追加します。それはうまくいくでしょう。あなたの問題を確実に解決します。

于 2013-09-26T04:40:48.060 に答える