我目前在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将获得焦点?
答案 0 :(得分:0)
您已将EditText
对象分配到TextView
实例中。所以,改变这一行......
TextView valueField = e.View.FindViewById<EditText>(Resource.Id.valueEditText);
为...
EditText valueField = e.View.FindViewById<EditText>(Resource.Id.valueEditText);
答案 1 :(得分:0)
默认情况下,TextView
和EditText
都会吞下您的点按。尝试将此添加到TextView
的AXML:
android:focusable="false"