ListView BaseAdapter 中的 EditText 奇怪行为

Posted

技术标签:

【中文标题】ListView BaseAdapter 中的 EditText 奇怪行为【英文标题】:EditText weird behaviour in ListView BaseAdapter 【发布时间】:2014-03-21 06:20:00 【问题描述】:

我有一个 ListView,使用 BaseAdapter 填充。 在列表视图项中有一个数字 EditText:

...
            <EditText
                android:id="@+id/edit_quantita"
                android:layout_
                android:layout_
                android:layout_gravity="center"
                android:layout_marginTop="5dp"
                android:background="@drawable/edit_quantita"
                android:gravity="center_vertical|center_horizontal"
                android:inputType="number"
                android:text="1"
                android:textColor="#fff"
                tools:ignore="HardcodedText" >

            </EditText>
...

当我点击这个 EditText 时,数字键盘会立即提示,然后它突然被常规字符键盘覆盖。如果我尝试在这个键盘上写东西,任何地方都不会显示任何文字。 奇怪的是,如果我再次点击 Edittext,它的行为应该会正常,只显示工作中的数字键盘。

我能做什么?

【问题讨论】:

【参考方案1】:

EditText 的实现在ListView 中使用时存在许多缺陷。尝试将这段代码添加到您的onCreate()

int apiVersion = android.os.Build.VERSION.SDK_INT;
if (apiVersion >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH)
            getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
else
            getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

【讨论】:

【参考方案2】:

您可以尝试以下方法:

检查您是否有另一个可能与数字重叠的 EditText。 创建一个只有数字 EditText 的新活动,看看是否会发生同样的情况。 检查活动的代码以查看运行时是否正在修改某些内容。我不认为您可以通过代码更改 EditText 类型,但也许其他东西正在修改它的行为。

希望它有助于调试问题。

【讨论】:

以上是关于ListView BaseAdapter 中的 EditText 奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章

未调用 DrawerLayout 中的自定义 BaseAdapter ListView onItemClickListener

带有 BaseAdapter 的 ListView

Android ListView重写BaseAdapter如何改变指定item中的TextView的颜色?

使用 BaseAdapter 在 ListView 中显示 ArrayList

ListView 不显示带有 BaseAdapter 的 ImageButton

如何在填充了 BaseAdapter 的 Fragment 中刷新 ListView?