0

Listview アイテム レイアウトに 2 つの EditText フィールドがあります。ボタンをクリックすると、リストビューの最初の行として新しい項目が追加されます。そして、両方のフィールドにテキストを入力できます。

これが私のコードです:

<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" />

Adapter の 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 インチ タブレット) では、新しい項目を追加して 2 番目の EditText (つまり、説明フィールド) をタップすると、キーボードが表示されます。説明フィールドの下に、これで問題ありません。任意のキーを押すと、キーボードが説明フィールドを覆っています。フィールドに正確に何が入力されているのかわかりません。2 番目の EditText は、キーボードによって完全に隠されています。そして、これは最初の EditText フィールドでは起こりません。どこが間違っているのですか?galaxy-Tab2 で期待どおりに動作しないのはなぜですか? 私を助けてください。前もって感謝します。

4

2 に答える 2

0

次の行を Manifest に追加します。

android:windowSoftInputMode="adjustPan|adjustResize"

または、次の行を oncreate に与えることができます:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
于 2015-12-17T13:42:48.653 に答える