5

我有一个ListViewand 在其中ListView我有一个 Row 有一些TextViewsEditTexts在其中。当我按下行上的任意位置时,我希望 获得EditText焦点,以便输入文本。

问题是我无法让它工作。当我将 放在EditText中时,当我单击 时将不会ListView响应。OnItemClickListView

我尝试使用focusable="false"on EditText,它允许我再次单击,但即使将可聚焦设置为 true,ListView我也无法获得焦点。EditText接下来我尝试使用android:descendantFocusability="beforeDescendants"in ,ListView但它似乎没有做出任何改变,它仍然无法正常工作。

有没有人知道我可以做些什么来使它工作?

4

3 回答 3

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); 
} 
于 2012-07-10T13:51:16.610 回答
3

这样做

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

IE,

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

于 2012-07-10T13:29:00.480 回答
0

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

于 2012-07-10T13:26:11.603 回答