我有一个ListView
,ListView
我有一行TextViews
和EditTexts
。
当我按下行的任何地方时,我希望EditText
获得焦点,以便输入文本。
问题是我不能让它发挥作用。当我将EditText
放入ListView
OnItemClick
时,点击ListView
时,focusable="false"
将无响应。
我尝试在EditText
上使用ListView
并允许我再次点击EditText
,但即使设置了android:descendantFocusability="beforeDescendants"
之后我也无法获得焦点专注于真实。
接下来,我尝试使用ListView
中的{{1}},但它似乎没有做任何更改,但它仍然不起作用。
有没有人知道我能做些什么才能让它发挥作用?
答案 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)
,这可以解决它。