ListView中EditText的焦点

时间:2014-03-07 14:38:19

标签: android listview focus android-edittext xamarin.android

我目前在ListView中有一堆EditText存在问题

每个ListView项都定义如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/itemLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:gravity="left"
        android:maxLines="1"
        android:text="Label"
        android:textSize="17sp"
        android:textStyle="bold" />
    <EditText
        android:id="@+id/valueEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:layout_below="@id/itemMainLabel"
        android:gravity="left"
        android:textSize="14sp"
        android:inputType="textNoSuggestions"/>
</RelativeLayout>

现在无论我在哪里触摸列表项,此字段的EditText都需要获得焦点。 为此,我试着使用以下ItemClicked事件处理程序:

private void ListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
     TextView valueField = e.View.FindViewById<EditText>(Resource.Id.valueEditText);
     if (valueField != null)
     {
          valueField.RequestFocus();
     }
}

但是,每当我点击它时,EditText都能获得焦点(因为这是默认行为),所以ItemClick事件处理程序不会触发我在列表项中单击的位置。

事件处理程序没有触发的原因是什么?有没有办法使这个工作,以便只要点击项目的一部分,EditText将获得焦点?

2 个答案:

答案 0 :(得分:0)

您已将EditText对象分配到TextView实例中。所以,改变这一行......

TextView valueField = e.View.FindViewById<EditText>(Resource.Id.valueEditText);

为...

EditText valueField = e.View.FindViewById<EditText>(Resource.Id.valueEditText);

答案 1 :(得分:0)

默认情况下,TextViewEditText都会吞下您的点按。尝试将此添加到TextView的AXML:

android:focusable="false"