【问题标题】:EditText focus in a ListViewListView 中的 EditText 焦点
【发布时间】:2012-07-10 13:17:39
【问题描述】:

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

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

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

有没有人知道我可以做些什么来让它发挥作用?

【问题讨论】:

标签: android listview android-edittext


【解决方案1】:

试试这个,它应该让你点击一行并聚焦 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); 
} 

【讨论】:

    【解决方案2】:

    这样做

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

    即,

    从xml获取listview对象后,禁用该listview的点击,将焦点传递给子view

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-25
        • 2016-04-02
        • 2012-08-18
        • 1970-01-01
        相关资源
        最近更新 更多