2017-02-12 4 views
0

У меня есть Listview внутри HorizontalScrollView. В списке есть пути к файлам, а горизонтальное представление прокрутки предназначено для устранения необходимости обертывания более длинных путей.Android ListView отсекает элементы, более широкие, чем первый элемент

Все работает в соответствии с пожеланиями, за исключением того, что все элементы, длина которых превышает первый элемент в списке, сокращаются на длину первого элемента (независимо от ширины первого элемента, ни один из других элементов не будет прокрутите эту ширину).

Вот часть шаблона, который дает мне неприятности:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/layoutListView" 
    android:orientation="vertical" 
    android:layout_below="@+id/spFileTypes"> 

    <HorizontalScrollView 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 

     <ListView 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:id="@+id/lvItems"/> 

    </HorizontalScrollView> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="" 
     android:id="@+id/tvStatus"/> 

</LinearLayout> 

Вот скриншот выпуска:

listview issue screenshot

Изображение прокручивается весь путь к правильно. Третий элемент отключает «.php». Я пробовал это с длинными и короткими именами файлов, списками многих (верхние двойные цифры) и списками с несколькими, в каждом случае, кажется, что ограничение ширины зависит от ширины первого элемента.

Всякий раз, когда списки меняются, он всегда ограничивает свою ширину тем, что принадлежит первому элементу.

Желаемое поведение должно соответствовать ширине самого широкого элемента.

Я разобрался с моим сердцем, вырыл официальную документацию, и я в тупике. Любая помощь очень ценится :)

+0

Ваш HorizontalScrollView имеет layout_weight = 1, а второй ребенок в LinearLayout этого не делает. Вы должны добавить вес в TextView или удалить его из ListView. Надеюсь, это поможет. –

+0

Я запомню это, но TextView отображается в макете точно по своему желанию (скриншот обрезается только для того, чтобы показать поведение обрезания конкретно) – BMB

ответ

0

Вместо обертывание ListView в HorizontalScrollView, попробуйте следующее:

<ListView 
    android:id="@+id/listview" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:scrollbars="horizontal"/> 

Если это помогает любому, то пожалуйста проголосовать мой ответ. Благодарю.

+0

Да, listview не должен быть дочерним элементом любого прокрутки. Это может привести к странному поведению. –

+0

Не знаю, почему, но когда я меняю код на это, он обматывает строки, делая их немного трудными для чтения. Я не получаю никаких полос прокрутки на экране (я полагаю, потому что они обертывают?) Может ли это быть проблемой с TextView для каждого отдельного элемента списка? – BMB

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

  • Нет связанных вопросов^_^