listview项目中的android onTouch事件

时间:2015-06-28 13:31:58

标签: android listview android-listview ontouchlistener

我已经四处搜索,并且已经阅读了这个threadthread等等,但没有任何帮助。

我有一个包含自定义布局的列表视图。布局有一个自定义搜索栏。我已经在列表视图中使用了搜索栏,但效果非常好但是在列表视图中使用时,onTouch事件没有正确调用,只有在我开始触摸它时才会运行。

这是我在getView中的代码的一部分:

          newSimpleDim.layTouch1.setOnTouchListener(new OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    int x = (int) event.getX();
                    int y = (int) event.getY();
                    if (y < 0)
                        y = 0;
                    if (y > dimHeight)
                        y = dimHeight;

                    G.log("Event : " + event.getAction());

                    switch (event.getAction()) {
                        case MotionEvent.ACTION_MOVE:
                            setHeight(newSimpleDim.layGray1, y);
                            setHeight(newSimpleDim.layGreen1, dimHeight - y);
                            setPadding(newSimpleDim.imgGreen1, -y);
                            newSimpleDim.txtlbl1.setText("" + (100 - ((int) ((y / (double) dimHeight) * 100))));
                            break;
                    }
                    return true;
                }
            });

这是列表项布局:

<LinearLayout
        android:id="@+id/dimmerOne"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/layTouch1"
            android:layout_width="wrap_content"
            android:layout_height="202dp"
            android:orientation="vertical" >

            <LinearLayout
                android:id="@+id/layGray1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dip"
                android:layout_marginRight="20dp"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/imgGray1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:scaleType="matrix"
                    android:src="@drawable/lay_component_dimmer_slider_off" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/layGreen1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/imgGreen1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:scaleType="matrix"
                    android:src="@drawable/lay_component_dimmer_slider_on" />
            </LinearLayout>
        </LinearLayout>

        <TextView
            android:id="@+id/txtlbl1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:text="TextView"
            android:typeface="monospace" />

    </LinearLayout>

1 个答案:

答案 0 :(得分:0)

这个问题看起来和我面临的问题类似,我有复选框,而且itemClickListener无效,请执行以下操作使itemClickListener正常工作,

在复选框中添加了以下属性

android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"

和ItemClickListner开始工作。

如果没有为搜索栏调用onTouch,则将上面的代码添加到布局中。

有关listview中可点击复选框的详细示例,您可以浏览该链接,并且可以应用相同的概念来制作onTouch工作

http://knowledge-cess.com/android-itemclicklistner-with-checkbox-or-radiobutton/

希望它有助于干杯!!