LongClick不在空gridview上工作

时间:2013-08-10 02:11:54

标签: android android-layout

是否可以在空网格视图或网格视图的空白处处理longclick?我尝试使用下面显示的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    GridView gridview = (GridView) findViewById(R.id.gridView1);

    gridview.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            Toast.makeText(MainActivity.this, "does it works?", Toast.LENGTH_SHORT).show();
            return false;
        }
    });
}

但不幸的是,它不起作用。 有人可以告诉我,我怎么能在空的gridview上处理这个事件? 感谢

我还附上了我的xml文件:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="-5dip"
android:orientation="vertical" >
<GridView
        android:id="@+id/gridView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:longClickable="true"
        android:layout_weight="1"
        android:numColumns="3" >
    </GridView>

3 个答案:

答案 0 :(得分:0)

GridView包含从适配器创建的视图。如果要添加LongClickListener,则应使用OnItemLongClickListener。我不认为在GridView本身使用LongClickListener有任何用处。

答案 1 :(得分:0)

视图为NULL,您可以在哪里设置XXXListener?所以它不能。

答案 2 :(得分:0)

让gridview听取“OnTouchListener”,并使用GestureDetector来处理onTouch事件。最后在“onLongPress”方法中执行您想要的操作。

此外,为了避免onLongPressonItemLongclick之间发生冲突,我们可以检查是点击的项目还是空的地方longPressed。

int itemPosition = mGridView.pointToPosition((int)event.getX(), (int)event.getY());,如果itemPosition == -1,则表示空位。