2016-04-18 5 views
0

Я думал, что первый элемент не был добавлен в список, но я заметил, что его добавили, потому что когда я помещал marginTop android:layout_marginTop="?android:attr/actionBarSize", появился элемент ListView. Что мне делать, чтобы исправить это?

Без атрибута android:layout_marginTop="?android:attr/actionBarSize" первый элемент исчезает, он находится за ActionBar.Первый элемент ListView ago ActionBar

Genymotion Emulator image

activity_settings.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.simplerecorder.preferences.SettingsActivity"> 

    <ListView 
     android:id="@+id/listSettings" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="?android:attr/actionBarSize" 
     android:divider="@drawable/list_separator" 
     android:dividerHeight="3dp" /> 

</RelativeLayout> 

в SettingsActivity.java

 listView = (ListView) findViewById(R.id.listSettings); 

     String[] titles = context.getResources().getStringArray(R.array.titles); 
     String[] descs = context.getResources().getStringArray(R.array.descs); 

     listAdapter = new SettingsAdapter(context, titles, descs); 
     listView.setAdapter(listAdapter); 

     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       switch (position) { 
        case 0: 
         prefsDialogs.dgColorPicker(); 
         break; 
        case 1: 
         prefsDialogs.dgNotify(); 
         break; 
        case 2: 
         prefsDialogs.dgFolderPicker(); 
         break; 
       } 
      } 
     }); 
    } 

arrays.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <string-array name="titles"> 
     <item>Cor do widget</item> 
     <item>Onde salvar</item> 
    </string-array> 

    <string-array name="descs"> 
     <item>Mude a cor do widget aqui</item> 
     <item>Escolha a pasta de sua preferencia</item> 
    </string-array> 

</resources> 
+1

Это нормальное поведение. Нечего исправить. Панель инструментов - это просто лист над другими элементами пользовательского интерфейса. Если вы хотите, чтобы ваши другие элементы пользовательского интерфейса отображались под ним, вы должны сообщить им. Установив marginTop или используя RelativeLayout и установите под панелью инструментов. – Knossos

+0

Спасибо, я использую RelativeLayout.LayoutParams и marginTop, но я думал, что это ошибка в моем коде. – Lucas

ответ

2

Написав это как ответ, чтобы заполнить этот вопрос (и для последующих ссылок пользователей Stack Overflow).

Это нормальное поведение. Нечего исправить.

Панель инструментов - это просто лист над другими элементами интерфейса.

Если вы хотите, чтобы ваши другие элементы пользовательского интерфейса отображались под ним, вам нужно сообщить им. Установив android:layout_marginTop="?android:attr/actionBarSize" или используя RelativeLayout и установите ниже Toolbarandroid:layout_below="@id/toolbar".

Смежные вопросы