У меня есть ListActivity, который я хочу изменить Высота элемента относится к высоте устройства
public class MainActivity extends ListActivity { . . . setListAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,mainMenuItems)); }
Его моя ListActivity на галактике nexus S:
И по галактике nexus 7:
Как я должен определять высоту элементов списка?
Высота элементов ListView – это высота содержимого макета элемента, например высота android.R.layout.simple_list_item_1. Если вы хотите разную высоту, создайте xml-файл и поместите атрибут layout_height или minHeight.
Это модифицированный simple_list_item_1, который ссылается на вашу ценность
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceListItemSmall" android:gravity="center_vertical" android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" android:paddingRight="?android:attr/listPreferredItemPaddingRight" android:minHeight="@dimen/your_defined_minumum_height"/>
И в вашем dimen.xml
<dimen name="your_defined_minumum_height">48dp</dimen>
ListView lvLogs = new ListView(this); lvLogs.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, logs) { @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.setMinHeight(0); // Min Height textView.setMinimumHeight(0); // Min Height textView.setHeight(44); // Height return view; } });
Примечание: требуется MinHeight и MinimumHeight !!!
Установите минимальную высоту 0 ~ 20 (или выше): setMinHeight(?)
+ setMinimumHeight(?)
Тогда TextView в ListView будет иметь нормальную высоту (меньше, чем по умолчанию ListView)
Если вы хотите setHeight(?)
высоту в пикселе, используйте setHeight(?)
Вам необходимо создать свой собственный файл макета для каждого элемента в ListView. Там вы можете редактировать все, что захотите, и вы можете получить много преимуществ.
Настройте адаптер для вашего ListView с информацией screenHeight (H). Учитывая, что вы хотите, чтобы на вашем экране отображалось 9 столбцов (элементов), вы можете указать высоту каждого из них как H / 9. При этом вы можете точно контролировать внешний вид вашего ListView независимо от того, в каком виде устройства.