2012-03-12 3 views
1

У меня есть ListView для отображения предметов категории, ниже этого, у меня есть меню управления в LinerLayout, а также и кнопка go в верхней части этого приложения.listview получает неправильный порядок отображения

Все в порядке в первый раз. однако, когда я нажимаю на вход EditText, панель меню вытягивается с клавиатуры. Теперь порядок ListView был изменен.

пример: в начале: 1 Встреча 2 Событие 3 Расписание 4 Напоминание Позже показывается клавиатура и все: 1 Расписание 2 Напоминание 3 Встреча 4.

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

Я не могу решить эту проблему после долгого поиска в Интернете.

Это мой макет и мой список Apdater

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout ...> 
     <ListView 
      android:id="@+id/items" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_below="@+id/widget53"/> 

     <LinearLayout 
      android:id="@+id/widget39" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentLeft="true" > 

      <ImageButton ../> 

      <ImageButton ../> 

      <ImageButton ../> 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/widget53" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" > 

      <Button ../> 

      <EditText .. /> 
     </LinearLayout> 
    </RelativeLayout> 
//Write item on the screen 
    lv = (ListView)findViewById(R.id.items); 
      lv.setAdapter(indexadapter.getAdapter()); 
      lv.setTextFilterEnabled(true); 
      lv.setOnItemClickListener(ItemClick); 
//My list Adapter generate rows base on mData from database 
    CategoryHolder CategoryHolder = null; 
     if (convertView == null) { 
      //getting view format 
      CategoryHolder = new CategoryHolder(); 
      convertView = mInflater.inflate(R.layout.categoryshow, null); 
      CategoryHolder.category=(TextView)convertView.findViewById(R.id.indexcategory); 
     //setting tag for reuse; 
      convertView.setTag(CategoryHolder); 
     //setting text for each item; 
     CategoryHolder.category.setText((String)mData.get(position).get("CATEGORY")); 
     }else{ 
      CategoryHolder = (CategoryHolder)convertView.getTag(); 
     } 
+0

показать нам какой-то код (макет xml и ваш 'onCreate()') –

+0

звучит как вы не используйте представление списка для прокрутки, а просто для отображения всех ваших элементов (я прав?), если так, почему вы используете listview? – Joe

+0

Он решил ответ dldnh. Но я все еще не знаю, почему. – panda

ответ

2

в файле AndroidManifest.xml, в вашей < деятельности ... > определение, включают в себя android:windowSoftInputMode="adjustPan" так:

<activity 
    android:name=".ClassName" 
    android:windowSoftInputMode="adjustPan" > 
    ... 
</activity> 
+0

Не могли бы вы объяснить, как именно это решило проблему? Для меня это просто похоже на магическое решение, а не на логическое. Благодаря! –

+0

Вот почему это работает ... Главное окно деятельности не изменено, чтобы освободить место для мягкой клавиатуры. Скорее, содержимое окна автоматически разворачивается так, что текущий фокус никогда не скрывается клавиатурой, и пользователи всегда могут видеть, что они набирают. Это, как правило, менее желательно, чем изменение размера, поскольку пользователю может понадобиться закрыть мягкую клавиатуру, чтобы получить доступ к скрытым частям окна и взаимодействовать с ними. источник: http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft –

+0

это не сработало для меня – Steve

0

Когда вы используйте convertView метода getView() в вашем списке, вам нужно снова установить текст для каждого представления. Чтобы полностью понять, как работает просмотр списков, и как пересматриваются представления, вы должны посмотреть эти видеоролики в google I/O 2010 http://www.google.com/events/io/2010/sessions/world-of-listview-android.html

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