2015-01-11 2 views
1

Я стараюсь сейчас два дня, чтобы создать рабочую GridView, но он не будет работать, это то, как он выглядит:Android GridView Текст перекрывающихся

enter image description here

Вы видите, моя проблема в том, перекрывая текст , Я уже выяснил, что высота строки GridView задана по последнему элементу. Мой XML выглядит так:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".Startbildschirm"> 


    <GridView 
     android:numColumns="2" 
     android:gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/listView" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:horizontalSpacing="5dp" 
     android:verticalSpacing="5dp" 
     /> 
</RelativeLayout> 

Моя идея, чтобы исправить это, чтобы получить высоты самого длинного зрения в одной строке, а затем установить его в качестве MinHeight до последней точки зрения. Моя проблема заключалась в том, что представления сохраняются только до тех пор, пока они видны, поэтому вниз и вверх по высоте высота снова изменилась. У кого-нибудь есть идея, как это исправить?

+0

Если я понимаю ваш вопрос, ячейки в 2 столбцах не имеют одинаковой высоты, но высота строки - это высота элемента во втором столбце? – njzk2

ответ

1

ваша проблема заключается в компоновке gridViewItem (тот вы надуть адаптер) не с GridView, я верю, он имеет

android:layout_height="wrap_content" 

где-то, просто установить высоту макета там иметь фиксированный количество dp

(android:layout_height ="10dp" for instance) 

тогда у вас не будет проблем.

редактировать на основе комментариев: 2 опции - 1) если список разве очень долго просто использовать TableLayout и заполнения строки в коде (минус в том, что она Безразлично recicle взгляды, и для этого требуется больше памяти, чем GridView), но он должен получить эффект, который вы хотите (каждая строка использует содержимое упаковки и настраивается на длину текста)

2) адаптер использует список какого-либо рода - пропустите его перед использованием сетки и получите максимальную height, теперь создайте пользовательский адаптер, который использует это (максимальную высоту) в вашем getView(), чтобы возвращать соответствующие виды (все они достаточно большие для максимальной длины)

+0

Это не сработает, потому что высота представления зависит от длины текста, который установлен в текстовых блоках:/ – ich5003

+0

@ ich5003 текстовое поле, на которое вы определяете размер набора, просто не отобразит текст, когда его переполняет , размер представления зависит от текста, потому что, как вы его определили, я предполагаю (поделитесь макетом элементов, см. наверняка), в любом случае вы можете просто создать метод, который сокращает текст после определенного размера, что-то вдоль линии (если (s.length> max), то s = s.subString (0, maxChars)), так что ваш текст имеет одинаковый размер для каждого вида. –

+0

Вы правы, высота представления зависит от текста. Но я не могу это изменить, потому что текст несколько раз, и он должен показывать весь текст, поэтому я не могу просто его разрезать. Моя проблема заключается не в том, чтобы устанавливать представления со статической высотой, я ищу решение установить MinHeight одного ROW как самый длинный вид. Может быть, я описал свою проблему немного неправильно, но thx для вашей помощи хотя :) – ich5003

3

Another решений держать родителей клетки к wrap_content, но ограничить TextView до, например, 2 или 3 линии android:lines="2" это все мнения в виде сетки будут иметь одинаковый размер.

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