在ListView中设置EditText焦点

6
我有一个ListView,在这个ListView中有一行,里面有一些TextView和EditText。当我在这一行的任何地方点击时,我希望EditText能够获得焦点以便输入文本。
问题是我无法做到这一点。当我把EditText放在ListView中时,当我单击ListView时,OnItemClick不会响应。
我尝试在EditText上使用focusable="false",它允许我再次点击ListView,但即使将focusable设置为true,我也无法使EditText获得焦点。
接下来,我尝试在ListView中使用android:descendantFocusability="beforeDescendants",但似乎没有任何变化,仍然无法工作。
有人有想法可以让它工作吗?

3个回答

4

试试这个,它应该让你点击一行并聚焦到EditText(改编自这个SO答案):

public void onItemSelected(AdapterView<?> listView, View view, int position, long id) 
{ 
    EditText yourEditText = (EditText) view.findViewById(R.id.youredittextid);
    listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); 
    yourEditText.requestFocus(); 
} 

public void onNothingSelected(AdapterView<?> listView) 
{ 
    // onNothingSelected happens when you start scrolling, so we need to prevent it from staying 
    // in the afterDescendants mode if the EditText was focused  
    listView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS); 
} 

3

按照以下步骤进行

ListView listView = (ListView) findViewById(R.id.yourListViewId);
listView.setItemsCanFocus(true);
listView.setClickable(false);

IE浏览器:

从XML获取ListView对象后,禁用该ListView的点击事件,并将焦点传递给其子视图。


0

你可以在XML行布局中添加一个属性,如enabled="false",然后在onItemClickListener中使用setEnabled(true)setFocusable(true),这样应该就可以解决问题了。


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