Listview仍然可以点击,即使被点击的片段取代

时间:2014-05-20 15:26:41

标签: android android-fragments android-listview android-viewpager

我有以下问题: 我使用以下方式开发应用: public class MainActivity extends FragmentActivity implements ActionBar.TabListener

这是使用ViewPager。所以最初的main_activity.xml是

<?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:fadingEdge="none" >

    <FrameLayout
        android:id="@+id/main_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </FrameLayout>

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="fill_parent" >
    </FrameLayout>

</RelativeLayout>

,framgent_container.xml包含以下内容

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/items_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/adv_image"
        android:layout_width="fill_parent"
        android:layout_height="56dp"
        android:src="@drawable/no_adv" />

    <ListView
        android:id="@id/android:list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/adv_image" />

</RelativeLayout>

所以这是问题所在: 我正确显示列表,并在其顶部显示adv_image。当我点击列表中的一个项目时,我可以看到应该显示的项目。 (是一个线性布局,在滚动视图中包含图像视图和描述)。 的 BUT 当我点击图像视图(不可点击)时! 显示上一个列表中的另一个项目。这让我觉得Listview仍然存在(在我的文章后面?很奇怪)。即使我点击文章图片上方的一点点,它也会触发adv_image网址,该网址仅存在于列表视图中而不存在于此片段中。

用文章片段替换列表视图的代码如下。

public class ArticlesListFragment extends ListFragment {

onCreateView膨胀以下

View rootView = inflater.inflate(R.layout.items_list, container, false);

具有以下功能

@Override
public void onListItemClick(ListView l, View v, int position, long id) {

    Fragment fragment = null;
    Bundle args = new Bundle();

    fragment = new Article();

    args.putString("unique_id", ((ArticleItem) v.getTag()).ID);

    fragment.setArguments(args);

    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
    ft.addToBackStack("HomePage");
    ft.replace(R.id.fragment_container, fragment);
    ft.commit();

}

所以任何想法?????我试图替换几个不同的东西onitemclick ..但我还没有运气..

提前致谢!

1 个答案:

答案 0 :(得分:0)

稍后出现在XML中的元素将被放置得更高,因此在上面显示的XML中,ListView将出现在ImageView上方。如果您希望ImageView位于顶部,请交换订单。

无关的说明:

1)fill_parentmatch_parent相同(但首选match_parent

2)您只需要在第一次使用+时为adv_image添加前缀(在{{1}}已经完成两次)。