我创建了一个可扩展的 ListView,我在其中创建了一个自定义组布局。
在组布局上,我在右侧创建了一个 EditText。每当我将文本放在 EditText 上并单击可展开列表时,列表不会展开/折叠。
当我对 EditText 执行可聚焦错误时,列表将展开/折叠。
如何解决这个问题呢?请给我建议。
我创建了一个可扩展的 ListView,我在其中创建了一个自定义组布局。
在组布局上,我在右侧创建了一个 EditText。每当我将文本放在 EditText 上并单击可展开列表时,列表不会展开/折叠。
当我对 EditText 执行可聚焦错误时,列表将展开/折叠。
如何解决这个问题呢?请给我建议。
编辑文本本身就是一个焦点组件。如果我们在列表视图中放置可展开列表,则列表单击和折叠展开属性将不起作用。使用 EditText、Button、ImageButton 等时也会出现同样的问题,
所以你需要使用:
1.在可扩展列表中使用以下属性:
android:descendantFocusability="blocksDescendants"
或 2. 在 EditText 中使用以下属性
android:focusable="false"
今天,我解决了可扩展列表和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;
}
});