在 ListVIew 中使用自定义 TextView 的 LongClick 不工作
LongClick with Custom TextView in ListVIew NOT WORKING
我有一个 ListView,它有一个我从 here: FlowTextView
获得的自定义 TextView
问题是,如果我使用普通的默认 TextView,一切正常,但如果我使用此自定义文本视图,则如果在文本视图中单击,则所有单击事件(LongClick 和 OnClick)都不起作用,即仅单击事件在此自定义 TextView 无法到达的地方工作(我的列表行的边缘)。
我试过了
android:descendantFocusability="blocksDescendants"
android:focusable="false"
android:focusableInTouchMode="true"
但是 none 它起作用了,或者也许我用错了方法...如果您认为这些方法中的任何一种起作用,请详细说明如何使用它
我在 FlowTextView 中的实现
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:background="#ff71ff34">
<uk.co.deanwild.flowtextview.FlowTextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textView2"
android:text="Description"
android:textSize="24sp"
android:background="#1b1b1f"
android:textColor="@android:color/white">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="#ffffbb52"/>
</uk.co.deanwild.flowtextview.FlowTextView>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CodeLearn 1"
android:background="#1b1b1f"
android:textColor="@android:color/white"/></RelativeLayout>
在 OnCreate 内部
ListView mainList = (ListView)findViewById(R.id.listView1);
new Connect(mainList,this).execute(aa);
mainList.setClickable(true);
mainList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener()
{
public boolean onItemLongClick(AdapterView <?> arg0, View arg1,
int pos, long id) {
// TODO Auto-generated method stub
// Toast.makeText(this, "Wrong Username/Password! TRY AGAIN!", Toast.LENGTH_LONG).show();
Log.d("long clicked","pos: " + pos);
return true;
}
});
activity_main.xml 包含根列表视图
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"></ListView>
正如@Vikram 在评论中所说
Check line 88 of FlowTextView.java: Link. That should answer your
question.
所以基本上解决方案是将该对象的 setOnTouchListener 设置为 null
setOnTouchListener(null)
我有一个 ListView,它有一个我从 here: FlowTextView
获得的自定义 TextView问题是,如果我使用普通的默认 TextView,一切正常,但如果我使用此自定义文本视图,则如果在文本视图中单击,则所有单击事件(LongClick 和 OnClick)都不起作用,即仅单击事件在此自定义 TextView 无法到达的地方工作(我的列表行的边缘)。
我试过了
android:descendantFocusability="blocksDescendants"
android:focusable="false"
android:focusableInTouchMode="true"
但是 none 它起作用了,或者也许我用错了方法...如果您认为这些方法中的任何一种起作用,请详细说明如何使用它
我在 FlowTextView 中的实现
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:background="#ff71ff34">
<uk.co.deanwild.flowtextview.FlowTextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textView2"
android:text="Description"
android:textSize="24sp"
android:background="#1b1b1f"
android:textColor="@android:color/white">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="#ffffbb52"/>
</uk.co.deanwild.flowtextview.FlowTextView>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CodeLearn 1"
android:background="#1b1b1f"
android:textColor="@android:color/white"/></RelativeLayout>
在 OnCreate 内部
ListView mainList = (ListView)findViewById(R.id.listView1);
new Connect(mainList,this).execute(aa);
mainList.setClickable(true);
mainList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener()
{
public boolean onItemLongClick(AdapterView <?> arg0, View arg1,
int pos, long id) {
// TODO Auto-generated method stub
// Toast.makeText(this, "Wrong Username/Password! TRY AGAIN!", Toast.LENGTH_LONG).show();
Log.d("long clicked","pos: " + pos);
return true;
}
});
activity_main.xml 包含根列表视图
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"></ListView>
正如@Vikram 在评论中所说
Check line 88 of FlowTextView.java: Link. That should answer your question.
所以基本上解决方案是将该对象的 setOnTouchListener 设置为 null
setOnTouchListener(null)