0

У меня есть два поля EditText в макете Listview. Новый элемент будет добавлен как первая строка в Listview при нажатии кнопки. И я могу ввести текст в оба поля.Клавиатура скрывает EditText в Android

Вот мой код:

<ListView 
android:id="@+id/items_listView" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:animationCache="false" 
android:background="@color/white" 
android:descendantFocusability="afterDescendants" 
android:fadingEdge="none" 
android:fadingEdgeLength="0dp" 
android:focusable="true" 
android:divider="@android:color/transparent" 
android:overScrollMode="never" 
android:scrollingCache="false" 
android:smoothScrollbar="true" /> 

GetView() адаптера:

@Override 
public View getView(final int position, View convertView, final ViewGroup parent) { 

    final ViewHolder viewHolder; 
    if (convertView == null || !(convertView.getTag() instanceof ViewHolder)) { 
     viewHolder = new ViewHolder(); 
     convertView = inflater.inflate(R.layout.items_listview_item, null); 
     viewHolder.quantity = (EditText) convertView.findViewById(R.id.quantity_editText); 
     viewHolder.description = (EditText) convertView.findViewById(R.id.description_editText); 
     viewHolder.description.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 
     convertView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 
    viewHolder.position = position; 
    viewHolder.description.setText(itemsArrayList.get(position).getDescription()); 
    viewHolder.quantity.setText(itemsArrayList.get(position).getQuantity()); 

    viewHolder.quantity.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
     } 
     @Override 
     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
     } 
     @Override 
     public void afterTextChanged(Editable arg0) { 
      itemsArrayList.get(viewHolder.position).setQuantity(arg0.toString()); 
     } 
    }); 

    viewHolder.description.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
     } 
     @Override 
     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
     } 
     @Override 
     public void afterTextChanged(Editable arg0) { 
      itemsArrayList.get(viewHolder.position).setDescription(arg0.toString()); 
     } 
    }); 


    return convertView; 
} 


private static class ViewHolder { 
    EditText description; 
    EditText quantity; 
    int position; 
} 

И я использую adjustPan для моей деятельности в манифесте.

Это мой вопрос: это нормально работает на всех устройствах, которые я тестировал, но на Samsung Galaxy-Tab2 (10-дюймовый планшет). Когда я добавляю новый элемент и нажимаю 2nd EditText (т.е. поле описания), клавиатура отображается чуть ниже поля описания, что отлично. Теперь, если я нажимаю любую клавишу, клавиатура закрывает поле описания. Я не вижу, что именно вводится в поле. 2-й EditText полностью скрыт клавиатурой. И это не происходит с 1-м полем EditText. Где я ошибаюсь? Почему это не работает, как ожидалось, на галактике-Tab2? Пожалуйста, помогите мне. Заранее спасибо.

ответ

0

Добавить эту строку в манифесте:

android:windowSoftInputMode="adjustPan|adjustResize" 

или вы можете дать эту строку в OnCreate:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 
+0

Нет, это не решало. Prblm все еще существует на Tab2 – Santhosh

0

Попробуйте это,

android:windowSoftInputMode="adjustResize". 

Если этого не достаточно , вам может понадобиться добавить имущество android:fitsSystemWindows="true"

к корневой компоновке, содержащей ваш EditText.

ИЛИ

изменить макет по этому, не пропустите линию, которая

андроид: isScrollContainer = "истинный"

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scrollview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:isScrollContainer="true" 
    android:orientation="vertical"> 

    <TableLayout 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:background="#000000" 
     android:padding="0dp" 
     android:stretchColumns="*"> 
     ... 
    </TableLayout> 
</ScrollView>