2013-06-25 3 views
3

У меня есть ImageView. Мне нужно использовать onLongClickListener для ImageView. Когда я использую этот код, ничего не происходит.OnLongClickListener не работает

Код:

gallery=(Gallery)findViewById(R.id.gall1); 

gallery.setAdapter(new ImageAdapter(MainActivity.this)); 

      gallery.setOnItemClickListener(new OnItemClickListener() 
      { 

       @Override 
       public void onItemClick(
         AdapterView<?> parent, View v, 
         int position, long id) { 
        // TODO Auto-generated method stub 

        final ImageView imageView = (ImageView) findViewById(R.id.image1); 
        imageView.setImageResource(imageIDs[position]); 

        imageView.setLongClickable(true); 


    imageView.setOnLongClickListener(new View.OnLongClickListener(){ 

     @Override 
     public boolean onLongClick(View v) { 
      // TODO Auto-generated method stub 

          Toast.makeText(getApplicationContext(), "Long Press work", Toast.LENGTH_SHORT).show(); 

     return true; 
      } 

     }); 


    imageView.setOnTouchListener(new View.OnTouchListener() { 

    @Override 
    public boolean onTouch(View v,MotionEvent event) { 
    // TODO Auto-generated method stub 
    layoutParams = (RelativeLayout.LayoutParams) imageView.getLayoutParams(); 

     switch(event.getAction()) 
      { 
    case MotionEvent.ACTION_DOWN : 
     { 
    parms = (RelativeLayout.LayoutParams) imageView.getLayoutParams(); 

      dx = event.getRawX() - parms.leftMargin; 
    dy = event.getRawY() - parms.topMargin; 
    } 
break; 
    case MotionEvent.ACTION_MOVE : 
{ 
x = event.getRawX(); 
y = event.getRawY(); 
    parms.leftMargin = (int) (x-dx); 
parms.topMargin = (int) (y - dy); 
            imageView.setLayoutParams(parms); 
    } 
break; 
case MotionEvent.ACTION_UP : 
{ 

    } 
    break; 
} 

    return true; 
    } 
}); 
    } 


}); 
+0

раз View.OnLongClickListener заменить его OnLongClickListener и попробовать. – Harish

+0

@Harish: Я пробовал. Можно ли использовать OnTouchListener, OnLongClickListener для того же imageView? – user2474320

+0

вместо OnTouchListener использует OnClickListener. – Harish

ответ

13

Вам необходимо включить длинный щелчок по коду:

imageView.setLongClickable(true); 
imageView.setClickable(true); 

Последняя строка, вероятно, не стоит, но он также не имеет никаких проблем.

+0

По его требованию достаточно только 'setLongClickable()'. –

+0

Можно ли тестировать longclick в эмуляторе? Я нажимаю мышь longclick, ничего не происходит. – user2474320

+0

Да, это должно сработать. – rekire

7

Ее не нужно делать setLongClickable в коде, его лучше, если вы определили его в XML

android:longClickable="true"