带有EditText的Android ListView在键盘显示时失去焦点。键盘随机出现

带有EditText的Android ListView在键盘显示时失去焦点。键盘随机出现,android,android-studio,android-edittext,Android,Android Studio,Android Edittext,我是一名iOS开发人员,我被赋予了修复此问题的任务。 在挖掘和谷歌搜索之后,我不知道该怎么办 我们有这个屏幕: 此屏幕是带有自定义片段的活动,包含ArrayAdapter提供的ListView。 适配器似乎通过getView生成视图。 每行有七个EditText控件 问题1: 当屏幕第一次显示时,点击任何编辑文本,什么都不会发生。 为什么? 第二次及以后任何时间点按时,焦点工作,键盘出现,您可以键入 问题2: 这很难描述。在某些设备上,点击任何编辑文本都会导致键盘在某些数字和字母数字类型之间切换

我是一名iOS开发人员,我被赋予了修复此问题的任务。 在挖掘和谷歌搜索之后,我不知道该怎么办

我们有这个屏幕:

此屏幕是带有自定义片段的活动,包含ArrayAdapter提供的ListView。 适配器似乎通过getView生成视图。 每行有七个EditText控件

问题1: 当屏幕第一次显示时,点击任何编辑文本,什么都不会发生。 为什么? 第二次及以后任何时间点按时,焦点工作,键盘出现,您可以键入

问题2: 这很难描述。在某些设备上,点击任何编辑文本都会导致键盘在某些数字和字母数字类型之间切换,这种切换持续不断,然后停止。 为什么?

在尝试了各种东西之后:

我不知道是什么问题

根据其中一篇文章的说法,你不应该同时拥有onClick和onTouch,但它们都在这里。 为什么?

我仍然在挖掘,注释各种代码,但我是在黑暗中,请帮助

全部代码:

更新1:

我已删除所有侦听器、onTouch、onFocus和文本监视程序

这种情况仍在发生:

更新2:


这似乎与覆盖ListView的键盘有关。不知道为什么,但当我在数据源中设置少于10项时,键盘不会覆盖内容,也不会出现乒乓球效果。

也许这对您有用:
尝试删除onClick并仅使用onTouch,希望有帮助。

我不确定您是否有此视图的xml,或者您是否以编程方式生成这些edittext如果您有xml,则为每个编辑文本执行android:inputType=number如果您以编程方式生成这些edittext,则为每个edittext执行此操作。setInputTypeInputType.TYPE_number_FLAG_SIGNED | inputType.TYPE_CLASS_number;使用此唯一的数字键将显示供用户输入,接下来只需将addTextChangedListener添加到每个editText

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
//handle your changes here
    }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
更新

带EditText的Android ListView在键盘显示时会失去焦点问题是,当您的ListView具有可输入字段,可在焦点上显示软键盘时,EditText第一次失去焦点,但第二次它工作正常。发生这种情况的原因是,所有视图都将再次渲染,因此项目行中以前聚焦的EditText字段对象现在是一个完全不同的对象。android:DegenantFocusability=Before子体在ListView中,android:WindowsOfInputMode=adjustPan在应用程序清单中为您的活动调整

<ListView android:id="@+id/productList" android:layout_width="match_parent"
 android:layout_height="wrap_content" android:layout_alignLeft="@+id/search" 
android:layout_below="@+id/search" 
android:padding="5dp" 
android:descendantFocusability="beforeDescendants"/>

参考

从你的问题来看,不清楚你到底想在这里实现什么。为什么要同时使用onClick和onTouch?@Jacks这个应用程序已经由一些开发人员编写。这个屏幕上出现的问题是,当用户点击任何编辑文本时,键盘就会出现,然后自动在数字和字母数字输入模式之间切换。我希望能够点击EditText,输入一个数字,点击下一个EditText,输入一个数字,点击下一个EditText,在键盘不打乒乓球的情况下输入一个数字。为此,您可以暂时注释掉所有与EditText相关的事件,然后尝试运行一次。它应该会起作用。这里的问题是由于添加到editText@Jacks对而且似乎这是由setText调用完成的。这是否会引发更多事件?我在整个代码中添加了gist,没有修改。我可以看到4个不同的事件在editText中注册。没什么了。然后setOnFocusChangeListener再次设置文本,这可能是导致乒乓效应的原因xml中的输入类型为numberDecimal。即使我没有附加任何听众,我也会得到乒乓球效果。知道为什么吗?你在多台设备上试过吗?还是只在模拟器上?你有没有试过用java文件编写代码,将输入类型设置为数字?在一台Android平板电脑和模拟器上试过。我已尝试将输入类型设置为数字。同样的效果。这似乎与点击其他编辑文本后不隐藏键盘有关。。。我迷路了。我知道你们已经评论了所有的听众,但我只是想确认你们是否评论了这行setListenersvh,stavkaHelper?是的,我评论过。现在我发现了一些事情。当键盘覆盖ListView时,似乎会发生此问题。当键盘覆盖ListView时,Android上是否有一些行为?
<ListView android:id="@+id/productList" android:layout_width="match_parent"
 android:layout_height="wrap_content" android:layout_alignLeft="@+id/search" 
android:layout_below="@+id/search" 
android:padding="5dp" 
android:descendantFocusability="beforeDescendants"/>
<activity android:name=".myActivity" 
android:label="@string/app_name" android:screenOrientation="sensorPortrait" android:windowSoftInputMode="adjustPan"/>