Подтвердить что ты не робот

Высота списка элементов андроида

Почему, когда я использую SimpleCursorAdapter для ListView, у меня есть высота элементов в ListView, как это - listview image

(Мой код основан на этом)

Но при использовании массивов Элементы Listview имеют большую высоту

listview big

(Я изучаю listview на основе this)

Макет строки для списка элементов списка

<?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@+id/text1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

Итак, мой вопрос в том, почему существует разница в высотах строк при использовании ArrayAdapter и SimpleCursorAdapter?

4b9b3361

Ответ 1

  android:textAppearance="?android:attr/textAppearanceLarge" 

казалось неэффективным.

  android:minHeight="?android:attr/listPreferredItemHeight" 

изменил высоту для меня

Ответ 2

Трюк для меня не устанавливал высоту - но вместо этого установил minHeight. Это должно быть применено к корневому представлению любого макета, который использует пользовательский адаптер для рендеринга каждой строки.

Ответ 3

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

<?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@+id/text1"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:padding="8dp" />

Ответ 4

Я сделал что-то вроде этого:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View view = super.getView(position, convertView, parent);

    TextView textView = (TextView) view.findViewById(android.R.id.text1);
    textView.setHeight(30);
    textView.setMinimumHeight(30);

    /*YOUR CHOICE OF COLOR*/
    textView.setTextColor(Color.BLACK);

    return view;
}

Вы должны поместить оба поля textView.setHeight(30);                   textView.setMinimumHeight(30); или это ничего не изменит. Для меня это сработало, и у меня была та же проблема.

Ответ 5

Высота элементов списка списка настраивается на основе его содержимого. На первом изображении нет контента. поэтому высота очень минимальна. Во втором изображении высота увеличивается в зависимости от размера текста. Потому что вы указали андроид: layout_height = "wrap_content".

Ответ 6

Это мое решение (есть вложенный LinearLayout):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

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

        <TextView
            android:id="@+id/item"
            android:layout_width="match_parent"
            android:layout_height="47dp"
            android:background="@drawable/box_arrow_top_bg"
            android:gravity="center"
            android:text="全部收支"
            android:textColor="#666"
            android:textSize="16sp" />
    </LinearLayout>

</LinearLayout>

Ответ 7

Вот мои решения; Это мой getView() в подклассе BaseAdapter:

public View getView(int position, View convertView, ViewGroup parent)
{
    if(convertView==null)
    {
        convertView=inflater.inflate(R.layout.list_view, parent,false);
        System.out.println("In");
    }
    convertView.setMinimumHeight(100);
    return convertView;
}

Здесь я установил минимальную высоту ListItem до 100;