无法在可展开列表视图中的编辑文本框中输入文字

4

我正在使用可扩展的ListView,其中包含2个不同的子元素。 子布局包含3个EditText字段。 当我展开组时,它会显示子布局,但我无法在edittext字段中输入任何文本。

下面是我的自定义可扩展列表适配器中的代码:

public View getChildView(int groupPosition, int childPosition, boolean arg2, View childView,
        ViewGroup parent) 
{
    switch (groupPosition)
    {
    case 0:
        childView = inflater.inflate(R.layout.edit_personal_layout, null);
        final EditText fname = (EditText)childView.findViewById(R.id.editTextFname);
        fname.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) 
            {
                // TODO Auto-generated method stub
                fname.setFocusable(true);
            }
        });

        break;
    case 1:
        childView = inflater.inflate(R.layout.edit_experience_layout, null);
        break;
    case 2:
        childView = inflater.inflate(R.layout.edit_qualification_layout, null);
        break;
    case 3:
        childView = inflater.inflate(R.layout.edit_login_layout, null);
        break;
    case 4:
        childView = inflater.inflate(R.layout.edit_other_layout, null);
        break;
    }

    return childView;
}


public View getGroupView(int position, boolean arg1, View view, ViewGroup parent) 
{
    if(view==null)
    {
        view = inflater.inflate(R.layout.edit_head, null);

    }
    TextView head = (TextView)view.findViewById(R.id.list_item_text_view_head);
    head.setText(menu[position]);
    return view;
}
2个回答

5

1) 可能你的 EditText 没有获取焦点,这就是为什么你无法输入任何内容的原因。尝试在 xml-layout 文件中调整下面的行。

 android:descendantFocusability="blocksDescendants"

要了解如何将焦点放在子元素上,您可以参考此链接

2) 如果上述解决方案无效,则可以尝试在列表视图中添加。

<ListView
    android:id="@android:id/list" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent"
    android:descendantFocusability="beforeDescendants"
    />

并在mainfest.xml中更改活动:

<activity android:name= ".yourActivity" android:windowSoftInputMode="adjustPan"/>

3) 如果仍然无法正常工作,请查看这个链接(focusable-edittext-inside-listview)和这个链接

希望这能解决您的问题。


我应该在哪里添加这行代码?是在ExpandableListView中还是在子布局中? - Vikky
2
但是当我使用“blocksDescendants”时,无法获得焦点。但是,我使用“afterDescendants”而不是“blocksDescendants”,但是当我移动到下一个文本框时,我会失去在第一个文本框中输入的内容。 - Vikky
将上述行添加到XML文件的最外层布局结构中(editText所在的XML文件)。 - Moin Ahmed
afterDescendants: "只有在其子项不需要焦点时,ViewGroup 才会获得焦点"。我认为这就是为什么第一次有焦点但之后没有的原因。您可以参考此链接以获取更多详细信息。https://dev59.com/NnE85IYBdhLWcg3wpFIa - Moin Ahmed
@Vikky,我也遇到了同样的问题。你能告诉我解决方案吗? - Zin Win Htet
显示剩余3条评论

0

这里有一个类似的答案 "adjustPan"是存储用户输入的关键。聚焦的另一种替代方式:

<TextView
     android:id="@+id/e_text_label"...>
    <requestFocus /> </TextView>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接