1

我创建了一个可扩展的 ListView,我在其中创建了一个自定义组布局。

在组布局上,我在右侧创建了一个 EditText。每当我将文本放在 EditText 上并单击可展开列表时,列表不会展开/折叠。

当我对 EditText 执行可聚焦错误时,列表将展开/折叠。

如何解决这个问题呢?请给我建议。

4

2 回答 2

1

编辑文本本身就是一个焦点组件。如果我们在列表视图中放置可展开列表,则列表单击和折叠展开属性将不起作用。使用 EditText、Button、ImageButton 等时也会出现同样的问题,

所以你需要使用:

1.在可扩展列表中使用以下属性:

 android:descendantFocusability="blocksDescendants"

或 2. 在 EditText 中使用以下属性

android:focusable="false"
于 2013-02-08T10:57:10.917 回答
1

今天,我解决了可扩展列表和N级可扩展列表视图的上述问题。我附上了代码。首先,我在您的活动/适配器上设置了可聚焦的错误编辑文本,不要在 EditText 的 xml 上。

EditText.setFocusable(false);

其次,我使用了触摸监听器,因为在这里我将编辑文本设置为可聚焦。这样我就可以轻松地在编辑框上键入文本。

EditText.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                EditText.setFocusableInTouchMode(true);
                return false;
            }
        });

之后,我使用了 KeyListener,因为在这里我根据位置/组位置获取数据并在哈希映射上设置值。所以每当我点击 2 级或 N 级可扩展列表视图时,数据都不会改变。那就是在可扩展列表视图中非常重要。在完成按键后,我将隐藏键盘。并将编辑文本设置为可聚焦 false,以便我可以自由展开/折叠。

EditText.setOnKeyListener(new OnKeyListener() {
            String editValue;
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)
                {
                    editValue=groupHolder.numberEdit.getText().toString().trim();
                    EditText.setFocusable(false);
                    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY,0);
                }
                setEditValueHashMap.put(groupPosition, editValue);
                return false;
            }
        });
于 2013-02-14T11:40:04.647 回答