ListView перекрывает button

Рейтинг: 0Ответов: 2Опубликовано: 05.05.2015

Привет! Хочу, чтобы сверху списка была кнопка.

<?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:orientation="vertical" >

    <Button
        android:id="@+id/settingsButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:text="Settings"
        android:onClick="onButtonClick"/>
    <ListView
        android:id="@+id/lvItem"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

Почему, даже с layout_weight="1", lv перекрывает button? Помогите реализовать плиз

Ответы

▲ 1Принят

Ознакомился с вашими исходниками. Как и следовало ожидать у вас в MainActivity вызывается вовсе не activity_main.xml а совершенно другой лаяут. Более того, вас не смутило что у вас в MainActivity вообще не вызывается метод setContentView() и вообще не упоминается activity_main? Проблема в том что у вас MainActivity extends ListActivity вместо MainActivity extends Activity. И как я уже написал нет setContentView() - поэтому оно просто отображает вам список и все.

Проще всего исправить так:

1) в MainActivity первой строкой в методе onCreate() перенести super.onCreate(savedInstanceState);

2) сразу за ней добавить setContentView(R.layout.activity_main);

3) В activity_main.xml заменить у ListView id на стандартный для ListActivity: android:id="@android:id/list"

Это для начала, далее:

Оно и так будет работать, но activity_main плохой.

1) в данном случае layout_weight вообще не нужен, только прозводительность снижать будет.

2) у ListView высота всегда должна быть match_parent, иначе ему придется постоянно себе переизмерять чтобы правильно отобразиться на экране, что вообще плохо для производительности.

▲ 1

Нужно просто поменять у listView

android:layout_height="wrap_content" 

на

android:layout_height="0dp"

Должно помочь.