我一直在设计一个包含可扩展列表的应用程序。在每个列表的末尾,一个空EditText
的已准备好接收评论。我有以下问题;当我触摸 时EditText
,屏幕会稍微调整大小(这不是问题,因为调整大小并不总是发生,这取决于我的布局和EditText
int 列表的位置)并且出现软键盘。然而,在这些事件中,EditText
失去焦点并且不会重新获得焦点。这很不方便,因为没有焦点,尽管键盘可用,但来自键盘的输入不会到达EditText
. 一旦我再次触摸它,它EditText
就会按预期运行。
它变得更加陌生。在键盘仍然显示的情况下,我可以触摸不同EditText
的东西,同样的事情也会发生;它失去焦点。但是,一旦我通过了最初的失焦,我就可以在之前触摸EditText
的 s 之间自由移动,而不会出现任何与焦距相关的问题。只有当我隐藏软键盘时,“状态”才会消失,我需要点击EditText
s 两次才能编辑它们。
这是我的代码的摘录。首先,empty_comment.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/blank_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textCapSentences"
android:imeOptions="actionDone"
android:hint="@string/hint"
android:layout_marginLeft="30dip" >
</EditText>
</LinearLayout>
这是我使用相关布局的片段的摘录:
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.comment_empty, null);
final EditText editText = (EditText) convertView.findViewById(R.id.blank_box);
editText.setOnEditorActionListener(new OnEditorActionListener()
{
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
if(actionId == EditorInfo.IME_ACTION_DONE)
{
// Unrelated code
}
return true;
}
});
我没有在我的清单文件中指定任何特定的输入,但如果认为有帮助,我可以提供它。
更新:
在 中添加一条线来Activity
调整平底锅android:windowSoftInputMode="adjustPan"
确实可以部分解决问题。它将当前的意外行为替换为EditText
视图可能被软键盘隐藏的问题。
到目前为止,还没有找到理想的解决方案,但正在接近。查看已接受答案中的评论,它们可能对您有用!