Ответ 1
android:textAppearance="?android:attr/textAppearanceLarge"
казалось неэффективным.
android:minHeight="?android:attr/listPreferredItemHeight"
изменил высоту для меня
Почему, когда я использую SimpleCursorAdapter для ListView, у меня есть высота элементов в ListView, как это -
(Мой код основан на этом)
Но при использовании массивов Элементы Listview имеют большую высоту
(Я изучаю 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?
android:textAppearance="?android:attr/textAppearanceLarge"
казалось неэффективным.
android:minHeight="?android:attr/listPreferredItemHeight"
изменил высоту для меня
Трюк для меня не устанавливал высоту - но вместо этого установил minHeight. Это должно быть применено к корневому представлению любого макета, который использует пользовательский адаптер для рендеринга каждой строки.
Вам нужно использовать прописку в макете списка, так что пространство добавляется по краям элемента (просто увеличение размера шрифта не сделает этого).
<?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" />
Я сделал что-то вроде этого:
@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); или это ничего не изменит. Для меня это сработало, и у меня была та же проблема.
Высота элементов списка списка настраивается на основе его содержимого. На первом изображении нет контента. поэтому высота очень минимальна. Во втором изображении высота увеличивается в зависимости от размера текста. Потому что вы указали андроид: layout_height = "wrap_content".
Это мое решение (есть вложенный 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>
Вот мои решения; Это мой 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;