Android webview导致单击侦听器未触发
我有一个列表视图,它有一个文章列表。每X篇文章(目前为10篇),我都会有一个显示广告的WebView。我可以单击任何列表项,除了显示WebView的列表项上方的列表项。那个不会注册我的点击 显示或隐藏网络视图的代码:Android webview导致单击侦听器未触发,android,android-webview,listener,Android,Android Webview,Listener,我有一个列表视图,它有一个文章列表。每X篇文章(目前为10篇),我都会有一个显示广告的WebView。我可以单击任何列表项,除了显示WebView的列表项上方的列表项。那个不会注册我的点击 显示或隐藏网络视图的代码: if(position % 10 == 0) // || position == 0) && position > 0 { viewHolder.adView.loadUrl(tmpAdURL); viewHolder.adView.setVi
if(position % 10 == 0) // || position == 0) && position > 0
{
viewHolder.adView.loadUrl(tmpAdURL);
viewHolder.adView.setVisibility(View.VISIBLE);
}
else
{
viewHolder.adView.setVisibility(View.GONE);
viewHolder.adView.invalidate();
}
articleEntryListView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
Log.d("MINE", "ARTICLE CLICKED");
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minHeight="60dp" >
<!-- Title of the news entry -->
<ImageView
android:id="@+id/article_thumbnail"
android:layout_width="90dp"
android:layout_height="80dp"
android:layout_alignParentRight="true"
android:adjustViewBounds="true"
android:contentDescription="@string/articleThumbnail"
android:cropToPadding="true"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:paddingTop="10dp"
android:paddingLeft="0.5dp"
android:scaleType="centerCrop" />
<!-- WAS: android:padding="0.5dp" -->
<LinearLayout
android:id="@+id/article_row"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginRight="5dp"
android:layout_toLeftOf="@id/article_thumbnail"
android:minHeight="80dp"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/article_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/articleTitle"
android:textColor="@drawable/list_title_selector"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/article_subtitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/articleSubtitle"
android:textColor="@drawable/list_subtitle_selector"
android:textSize="10sp" />
</LinearLayout>
<WebView
android:id="@+id/article_ad"
android:layout_width="match_parent"
android:layout_height="90dp"
android:background="@color/meddark_gray"
android:layout_below="@+id/article_thumbnail"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:padding="10dp" />
</RelativeLayout>
main.xml
<ListView android:id="@+id/articles_list"
style="@style/ListView"
android:fadingEdge="vertical"
android:fadingEdgeLength="16dp"
android:divider="@color/extreme_light_gray"
android:dividerHeight="1dp" />
MainActivty.java的onCreate()中的侦听器:
if(position % 10 == 0) // || position == 0) && position > 0
{
viewHolder.adView.loadUrl(tmpAdURL);
viewHolder.adView.setVisibility(View.VISIBLE);
}
else
{
viewHolder.adView.setVisibility(View.GONE);
viewHolder.adView.invalidate();
}
articleEntryListView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
Log.d("MINE", "ARTICLE CLICKED");
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minHeight="60dp" >
<!-- Title of the news entry -->
<ImageView
android:id="@+id/article_thumbnail"
android:layout_width="90dp"
android:layout_height="80dp"
android:layout_alignParentRight="true"
android:adjustViewBounds="true"
android:contentDescription="@string/articleThumbnail"
android:cropToPadding="true"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:paddingTop="10dp"
android:paddingLeft="0.5dp"
android:scaleType="centerCrop" />
<!-- WAS: android:padding="0.5dp" -->
<LinearLayout
android:id="@+id/article_row"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginRight="5dp"
android:layout_toLeftOf="@id/article_thumbnail"
android:minHeight="80dp"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/article_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/articleTitle"
android:textColor="@drawable/list_title_selector"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/article_subtitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/articleSubtitle"
android:textColor="@drawable/list_subtitle_selector"
android:textSize="10sp" />
</LinearLayout>
<WebView
android:id="@+id/article_ad"
android:layout_width="match_parent"
android:layout_height="90dp"
android:background="@color/meddark_gray"
android:layout_below="@+id/article_thumbnail"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:padding="10dp" />
</RelativeLayout>
articleEntryListView.setOnItemClickListener(新的OnItemClickListener()
{
public void onItemClick(AdapterView父视图、视图v、整型位置、长id)
{
Log.d(“我的”、“点击的文章”);
}
}
文章条目列表项目。xml:
if(position % 10 == 0) // || position == 0) && position > 0
{
viewHolder.adView.loadUrl(tmpAdURL);
viewHolder.adView.setVisibility(View.VISIBLE);
}
else
{
viewHolder.adView.setVisibility(View.GONE);
viewHolder.adView.invalidate();
}
articleEntryListView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
Log.d("MINE", "ARTICLE CLICKED");
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minHeight="60dp" >
<!-- Title of the news entry -->
<ImageView
android:id="@+id/article_thumbnail"
android:layout_width="90dp"
android:layout_height="80dp"
android:layout_alignParentRight="true"
android:adjustViewBounds="true"
android:contentDescription="@string/articleThumbnail"
android:cropToPadding="true"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:paddingTop="10dp"
android:paddingLeft="0.5dp"
android:scaleType="centerCrop" />
<!-- WAS: android:padding="0.5dp" -->
<LinearLayout
android:id="@+id/article_row"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginRight="5dp"
android:layout_toLeftOf="@id/article_thumbnail"
android:minHeight="80dp"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/article_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/articleTitle"
android:textColor="@drawable/list_title_selector"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/article_subtitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/articleSubtitle"
android:textColor="@drawable/list_subtitle_selector"
android:textSize="10sp" />
</LinearLayout>
<WebView
android:id="@+id/article_ad"
android:layout_width="match_parent"
android:layout_height="90dp"
android:background="@color/meddark_gray"
android:layout_below="@+id/article_thumbnail"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:padding="10dp" />
</RelativeLayout>
这可能与我在列表项中使用
复选框时遇到的问题类似。请尝试在列表项XML中使用android:focusable=“false”
选项查看WebView
在我的例子中,复选框
正从列表项中获取焦点,它出于某种原因阻止事件触发
您使用一行布局是在浪费资源。请考虑一下:您在所有行中创建了一个WebView,但您会在90%的时间内立即隐藏它们…相反,您应该通过覆盖以下方法使用具有两行布局的自定义适配器:
@Override
public int getItemViewType(int position) {
return position % 11 == 0 ? 1 : 0;
}
@Override
public int getViewTypeCount() {
return 2;
}
接下来在getView()
或newView()
中检查应该加载哪种类型的版面。当getItemViewType()
返回0时膨胀新闻项版面,当它返回1时膨胀网络视图(自身)
除了速度更快、更有条理之外,您的WebView现在有自己的一行,应该会玩得很好。不幸的是,这似乎没有任何效果。完全同意,只是不确定如何实现(我仍然是Android noob)。谢谢-将尝试实现这一点,并尽快检查。