【问题标题】:Show/hide Edittext inside listview becomes invisible when keyboard pops up弹出键盘时,在列表视图中显示/隐藏 Edittext 变得不可见
【发布时间】:2014-09-29 08:09:19
【问题描述】:

我有一个自定义 Listview,其适配器扩展了 BaseAdapter 类。在列表视图的每一行内都有一个不可见的 EditText。它仅对已单击的特定行可见,并且在该行的其余部分保持不可见。当我触摸edittext以获取键盘时出现问题,一旦键盘出现,listview就会被回收并且edittext再次变得不可见。 我正在寻找一种解决方案,其中任一键盘在选择该行后立即关注edittext,或者在弹出键盘时edittext不会消失。以下是我正在使用的适配器:

这是我的适配器 xml 文件 saved_option_adapter_content.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/lineItem"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    >
<TextView 
    android:id="@+id/textLine"
    android:layout_height="wrap_content"
    android:layout_marginLeft="70dp"
    android:layout_marginTop="15sp"
    android:layout_marginBottom="5sp"
    android:textSize="14sp"
    android:paddingTop="-5dp"
    android:layout_width="wrap_content"/>

<LinearLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_alignParentRight="true">

<EditText 
    android:id="@+id/edittext_qty"
    android:visibility="invisible"
    android:gravity="center"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:singleLine="true"
    android:maxLength="4"
    android:textSize="14sp"
    android:inputType="numberPassword"
    android:focusable="true"
    android:textColor="@android:color/black"
    android:hint="cvv"/>
</LinearLayout>
</RelativeLayout>

这是我的 getView 方法:

public View getView(final int position, View convertView, final ViewGroup parent) 
             { 
             final ViewHolder holder;
                 if (convertView == null) 
                     {
                         convertView = mInflater.inflate(R.layout.saved_options_adapter_content, null);
                         holder = new ViewHolder();
                         holder.textLine = (TextView) convertView.findViewById(R.id.textLine);
                         holder.Edittext = (EditText) convertView.findViewById(R.id.edittext_qty);

                        editTextList.add(holder.Edittext);                  
                         convertView.setOnClickListener(new OnClickListener() 
                         {
                                 @Override
                                 public void onClick(final View v) 
                                     { 
selected_Txt="";
                                     if(view==null || view!=v){
                                     v.post(new Runnable() {
                                            @Override
                                            public void run() {
                                                view=v;
                                                  ViewHolder holder = ((ViewHolder)v.getTag()); 
                                                 holder.Edittext.setVisibility(View.VISIBLE);
                                                  holder.Edittext.requestFocus();
                                                 holder.Edittext.setCursorVisible(true);
                                                holder.Edittext.setFocusable(true); 
                                               if(selectedHolder != null ){
                                                selectedHolder.Edittext.setVisibility(View.INVISIBLE);
                                                }
                                                selectedHolder = holder; 
                                            }
                                        }); 
                                     }
                                     }
                         });

                         convertView.setTag(holder);
                     } 
                 else 
                     {
                     holder = (ViewHolder) convertView.getTag();
                    ((ViewHolder)convertView.getTag()).Edittext.setTag(title.get(position));
                     }

                  convertView.setTag(holder);
                 return convertView;
             } 

【问题讨论】:

    标签: android listview keyboard popup android-edittext


    【解决方案1】:

    我在您的代码中没有看到列表视图。也许 ArrayAdapter 可以帮到你:http://developer.android.com/reference/android/widget/ArrayAdapter.html

    【讨论】:

    • payOptionList = (ListView) returnView.findViewById(R.id.list); payOptionList.setFocusableInTouchMode(true);
    • 我在创建 ListView 时没有问题,当键盘弹出时 ListView 回收出现问题
    猜你喜欢
    • 2020-06-08
    • 2013-08-29
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    相关资源
    最近更新 更多