#android
#Android
Вопрос:
У меня есть следующий макет ( Android 4.4
):
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@ id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="@android:color/transparent"
android:dividerHeight="5dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
/>
</RelativeLayout>
Просмотр списка не отображается в центре. Чего мне не хватает?
Макет элемента ListView :
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@ id/icon"
android:layout_width="100dp"
android:layout_height="100dp"
android:scaleType="fitXY"/>
<TextView
android:id="@ id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@ id/label"
android:layout_marginTop="40dp"
android:textStyle="bold"
android:background="@color/list_background"
/>
</LinearLayout>
Редактировать :
- Даже если я установлю для ширины представления списка значение wrap_content, это не будет иметь значения.
- Изменение внешнего вида на LinearLayout не помогает.
Комментарии:
1. он уже соответствует родительской ширине, поэтому нет способа центрировать его по горизонтали
2. используйте LinearLayout вместо относительного макета
3. @Rod_Algonquin внес второе редактирование
4. @Jake опубликуйте свой макет элемента listview
5. @Rod_Algonquin опубликовал
Ответ №1:
Вам нужно изменить свой List Item Layout
, чтобы центрировать представления по горизонтали.
пример:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="horizontal" >
<ImageView
android:id="@ id/labIcon"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/lawl"
android:scaleType="fitXY" />
<TextView
android:id="@ id/labName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="item1"
android:textStyle="bold" />
</LinearLayout>
Ответ №2:
Это не решит вашу проблему, но
<ListView
android:id="@ id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
Вы не должны использовать wrap_content
для высоты ListView.
Таким образом, вы ListView
должны измерить свои элементы и получить элементы, которые он должен вызвать getView()
на адаптере. Это приводит к тому, что getView()
метод вызывается несколько раз неэффективным способом.