我有一个列表视图,其中包含列表中每个项目的自定义适配器。如果我的自定义项目是一些textview一切正常。但每个项目必须是一些HTML,因此我需要每个项目是一个webview。问题是webview窃取了我的点击,因此我无法从列表中选择一个项目。
所以这个:
this.itemAdapter = new ItemAdapter(this, R.layout.webview, itemArrayList);
ListView lv1 = (ListView) findViewById(R.id.ListView01);
lv1.setOnItemClickListener( new ItemSelected());
lv1.setAdapter(this.itemAdapter);
public class ItemSelected implements OnItemClickListener
{
@Override
public void onItemClick(AdapterView av, View v, int item, long id)
{
Intent showTextIntent = new Intent(showItems, ShowItemDetails.class);
showTextIntent.putExtra("itemID", singleItems.get(item).getItemID());
startActivity(showTextIntent);
}
}
点击已经死了。我在webview中没有任何链接或者必须导航我只使用它来获得一个很好的格式化文本(fromHtml for textview不是很好)。有机会吗?
答案 0 :(得分:2)
尝试在WebView
中执行setClickable(false)
,或在XML布局上使用android:clickable="false"
。
答案 1 :(得分:1)
我找到了两种方法来实现它:
1:在WebView上设置触摸侦听器以重定向触摸事件
webView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
// Do your thing
}
return false;
}
});
2:避免触发所有可能的触摸事件
webView.setClickable(false);
webView.setLongClickable(false);
webView.setFocusable(false);
webView.setFocusableInTouchMode(false);
答案 2 :(得分:0)
看一下这篇帖子Android WebView inside ListView onclick event issues。设置onTouch监听器可能适用于您,也可能不适合您,因为我认为它只会在WebView本身上注册onTouch事件。第二个响应,链接到一个论坛,其中建议您以编程方式将setClickable和setFocusable设置为false似乎更好。
答案 3 :(得分:0)
将webviews属性设置为clickable并将focusable设置为false对我有用。 做ListView的OnItemClickListener再次开火。