2015-11-18 4 views
3

Я использую Scrolling Activity, которая поставляется с Android Studio 1.4. У меня есть ImageView и ListView. XML для этого макета:ListView в Scrolling Activity отображает только A Single Item

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.viv.droidchef.EachRec" 
    tools:showIn="@layout/each_rec"> 

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

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:id="@+id/recPixx"/> 
     <ListView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/ingredients_list"></ListView> 

    </LinearLayout> 



</android.support.v4.widget.NestedScrollView> 

Проблема я столкнулся в том, что в моем ListView отображается только первый пункт. Вот мой код для ListView

String ingredients = new String[]{ 
        " Boneless Chicken     - 300 g", 
        "Ginger garlic paste     - 2 tsp", 
        " Kashmiri red chilly pwd    - ¾ tsp", 
        "Lemon juice       - 1 tsp", 
        "Salt to taste        ", 
        "Cooking oil      - 3 to 4 tbsp", 
        "Gram/besan flour (kadalai maavu - 2 tbsp", 
        "Yoghurt        - 1 cup", 
        "Kashmiri red chilly pwd    - 1 tsp", 
        " Ginger garlic paste     - 1 tsp", 
        "Turmeric pwd       - ¼ tsp", 
        "Garam masala pwd      - ½ tsp", 
        "Salt as required        " 
      }; 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, ingredients); 
     ListView lv= (ListView)findViewById(R.id.ingredients_list); 
     lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     lv.setAdapter(adapter); 
lv.setOnTouchListener(new ListView.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       int action = event.getAction(); 
       switch (action) { 
        case MotionEvent.ACTION_DOWN: 
         // Disallow ScrollView to intercept touch events. 
         v.getParent().requestDisallowInterceptTouchEvent(true); 
         break; 

        case MotionEvent.ACTION_UP: 
         // Allow ScrollView to intercept touch events. 
         v.getParent().requestDisallowInterceptTouchEvent(false); 
         break; 
       } 

       // Handle ListView touch events. 
       v.onTouchEvent(event); 
       return true; 
      } 
     }); 

Я использовал режим выбора несколько, потому что я хочу контрольный список. Я использую setOnTouchListener, потому что у меня уже есть NestedScrollView в моем макете. Я нашел это на другом посту SO. Если я установил высоту фиксированного dp, похоже, он работает, но это не помогает, так как будет выглядеть по-разному на каждом размере экрана. Есть ли способ исправить проблему, с которой я столкнулся, и получить все элементы в списке, не используя Dp?

+0

Наличие прокрутки (ListView) внутри другого прокрутки - это не очень хорошая идея. Вместо этого, возможно, вы можете сделать это изображение в заголовке своего списка ListView – AdamMc331

+0

, для которого вы пытаетесь установить размеры в ** dp ** –

+0

Итак, этот метод не сработает? –

ответ

1

Извлечь прокрутку. И передумайте, как вы позиционируете изображение, возможно, вынудите его к вершине представления.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 

     // android:layout_gravity="center_horizontal" 
     android:id="@+id/recPixx"/> 
    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/ingredients_list"></ListView> 

</LinearLayout> 
Смежные вопросы