使用可滚动项目布局在ListView上单击Onclick不起作用

时间:2014-09-22 10:49:21

标签: android listview scrollview

我有一个xml布局,我想在2种情况下使用: 1- for listView适配器中的项目(不连续滚动) 2-用于另一项活动(带滚动)

我已经尝试将此布局设为Scrollable(父级上的scrollView) - 当你为listView项目时(阻止滚动效果) - 当它用于其他活动时,启用scrollView 但是当我制作这个解决方案时,我无法在listView项目上使用onClickListner。

我的xml文件:list_messages_fragment_item.xml

<ScrollView 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" 
  android:background="@color/light_gray_2"
  android:paddingTop="10dp"
  android:paddingLeft="10dp"
  android:paddingRight="10dp"
  android:descendantFocusability="blocksDescendants"
  isScrollContainer="false"   
>

-- My One chlid LinearLayout containing my content 

</ScrollView>

这个Xml文件是我的listView的适配器:(在这种情况下不需要滚动)

public View getView(int position, View convertView, ViewGroup parent) {

    View vi=convertView;
    vi = inflater.inflate(R.layout.list_messages_fragment_item, null);

...

}

此xml文件也用于活动布局:(在这种情况下需要滚动)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActionBar().hide();
    setContentView(R.layout.list_messages_fragment_item);  

...

}

2 个答案:

答案 0 :(得分:1)

您需要在getView方法中添加触摸拦截侦听器

 ScrollView sv = (ScrollView) findViewById(R.id.scrollView); // this is view from inflated layout
 sv.setOnTouchListener(new OnTouchListener() {
// Setting on Touch Listener for handling the touch inside ScrollView
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // Disallow the touch request for parent scroll on touch of child view
        v.getParent().requestDisallowInterceptTouchEvent(true);
        return false;
    }
});

这将启用列表项上的触摸侦听器

答案 1 :(得分:0)

我找到了我想要的解决方案。 我在我的xml文件中使用LinearLayout父级。 我为活动创建了另一个例子:这个布局包含一个ScrollView,里面我包含我想要重复使用的xml文件。  要在活动中使用的新布局:

<ScrollView 
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="@color/white"
  android:paddingTop="10dp"
  android:paddingLeft="10dp"
  android:paddingRight="10dp"
  android:orientation="vertical" 
  android:scrollbars="none">

   <include layout="@layout/list_messages_fragment_item"/>
  </ScrollView>

list_messages_fragment_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" 
android:background="@color/light_gray_2"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:descendantFocusability="blocksDescendants"
>

......我的布局内容

</LinearLayout>