Listview android中的Edittext

20 android listview android-edittext convertview baseadapter

我有Listview与editext和textview.

当我触摸edittext时,edittext失去焦点!

我通过设置解决了这个问题android:windowSoftInputMode="adjustPan"(AndroidManifest.xml).现在我触摸edittext而不是editext获得焦点但是应用程序标签和listview的一些原始消失(顶部).

当用户触摸edittext而不丢失应用程序标签和一些原始列表视图时,我想获得焦点.

我已实施的代码:

当用户触摸edittext时,下面的编码会得到关注,但当软键盘弹出时,应用程序标签和listview的一些原始消失.我想在用户触摸edittext时获得焦点,而不会丢失应用程序标签和一些原始列表视图.

1)的AndroidManifest.xml

<application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MyListViewDemoActivity"
                  android:label="@string/app_name"
                  android:windowSoftInputMode="adjustPan"
                  >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

</application>
Run Code Online (Sandbox Code Playgroud)

2)raw_layout.xml

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <EditText android:id="@+id/mEditText"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  />  
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

3)main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView android:id="@+id/mListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

4)MyListViewDemoActivity

public class MyListViewDemoActivity extends Activity {
    private ListView mListView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mListView=(ListView)findViewById(R.id.mListView);
        mListView.setAdapter(new MyAdapter(this));
    }
}

class MyAdapter extends BaseAdapter {

    private Activity mContext;
    private String character[]={"a","b","c","d","e","f","g","h","i","j"};
    public MyAdapter(Activity context)
    {
        mContext=context;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return character.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }
private class Holder
{
    EditText mEditText;
}
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        final Holder holder;
        if (convertView == null) {
            holder = new Holder();
            LayoutInflater inflater =mContext.getLayoutInflater();
            convertView = inflater.inflate(R.layout.raw_layout, null);
            holder.mEditText = (EditText) convertView
                    .findViewById(R.id.mEditText);
            convertView.setTag(holder);
        } else {
            holder = (Holder) convertView.getTag();
        }
        holder.mEditText.setText(character[position]);
        holder.mEditText.setOnFocusChangeListener(new OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                // TODO Auto-generated method stub
                if (!hasFocus){
                    final EditText etxt = (EditText) v;
                    holder.mEditText.setText(etxt.getText().toString());
                }

            }
        });
        return convertView;
    }

}
Run Code Online (Sandbox Code Playgroud)

Cyr*_*lle 7

我遇到了同样的问题.我的数字键盘会在被qwerty键盘和EditText失去焦点取代之前暂时出现.

问题是出现的键盘会使您的EditText失去焦点.为防止这种情况,请在AndroidManifest.xml中为适当的Activity(或Activities)添加以下内容:

android:windowSoftInputMode="adjustPan"
Run Code Online (Sandbox Code Playgroud)

请参阅Android 文档:

当输入法出现在屏幕上时,它会减少应用程序UI可用的空间量.系统会决定如何调整UI的可见部分,但可能无法正确完成.为确保应用程序的最佳行为,您应指定系统在剩余空间中显示UI的方式.

要在活动中声明您的首选治疗,请使用android:windowSoftInputMode清单<activity>元素中的属性和其中一个"adjust"值.

例如,确保系统将布局调整到可用空间 - 这可确保您可以访问所有布局内容(即使它可能需要滚动) - 使用 "adjustResize"


Par*_*ani 4

如果没有看到您的代码,我们如何为您的问题提出可能的解决方案。因此,无论何时提出任何问题,都要保持发布可能的代码的习惯。

然而,在这里我找到了一个在 ListView 中实现Android Focusable EditText 的教程。查看示例并尝试以您的方式实施或找出问题的解决方案。