2013-09-26 5 views
1

Прежде всего, я хочу apollogize для моего английского, я из России, и я надеюсь, что google translater поможет мне описать мою проблему =). Итак, проблема в том, что у меня есть gridView и ExpandableListView внутри ScrollView, я знаю, что я не должен ставить что-то прокручиваемое. Просмотр внутри ScrollView, но для моей цели я не могу найти альтернативу. В моем проекте у меня есть бизнес-каталог с категориями (например, «Электроника», «Главная & Сад», «Моторы» и т. Д.), И все, что я хочу сделать, - это разместить большинство популярных категорий в gridView (и добавить к ним значки) и make scrollview, чтобы прокрутить его, как отдельный макет. Но мой scrollView не будет прокручивать его, как я могу это сделать?ListView и GridView внутри ScrollView. ScrollView не будет прокручивать

мой bizCatalog Actvivty:

enter image description here

мой 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> 

ответ

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); 
+0

Вам нужно иметь дело с адом, если вы хотите видеть виды адаптера в режиме прокрутки. Я думал, у вас не было другого выбора. –

0

В соответствии с рекомендациями Android вы не можете использовать один прокручиваемый макет в другом. Если вы используете ScrollView, вы не используете ListView внутри него. Поскольку оба макета прокручиваются. Поэтому, пожалуйста, используйте любой, чтобы прокрутить список.

0

Удалить сначала прокрутку. используйте listview и добавьте gridview в виде footviewview listview. он будет работать отлично. Определенно решить вашу проблему.

+0

Хорошо, я попробую (я знал, что могу добавить gridview в заголовок listview) – whizzzkey

Смежные вопросы