EditText焦点在ListView中

时间:2012-07-10 13:17:40

标签: android listview android-edittext

我有一个ListViewListView我有一行TextViewsEditTexts。 当我按下行的任何地方时,我希望EditText获得焦点,以便输入文本。

问题是我不能让它发挥作用。当我将EditText放入ListView OnItemClick时,点击ListView时,focusable="false"将无响应。

我尝试在EditText上使用ListView并允许我再次点击EditText,但即使设置了android:descendantFocusability="beforeDescendants"之后我也无法获得焦点专注于真实。 接下来,我尝试使用ListView中的{{1}},但它似乎没有做任何更改,但它仍然不起作用。

有没有人知道我能做些什么才能让它发挥作用?

3 个答案:

答案 0 :(得分:4)

试试这个,它应该让你点击一行并关注EditText(从这个SO Answer修改):

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); 
} 

答案 1 :(得分:3)

喜欢这个

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

从xml获取listview对象后,禁用此listview上的单击并将焦点传递给子视图

答案 2 :(得分:0)

您可以在xml行布局中添加enabled="false"属性,在onItemClickListener上添加setEnabled(true)然后setFocusable(true),这可以解决它。