2014-03-31 31 views
0

这是一个场景。我有一个线性布局,一个textview和一个imageview.Now在这里,我想改变在线性布局的按下状态的另一个imageview的背景。我使用的方法isPressed.But当我按下后留下线性布局,按下状态的变化依然存在。如何找到线性布局的按下状态?

这里是我的代码

lin_featured.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if(lin_featured.isPressed()) 
       { 
        linearmain.setVisibility(View.GONE); 
        imgfooterback.setBackgroundResource(R.drawable.discover_h); 
        i =new Intent(FirstPage.this,Featured.class); 
        startActivity(i); 

       } 
       else{ 
        //imgfooterback.setBackgroundResource(R.drawable.footerback); 
        linearmain.setVisibility(View.VISIBLE); 
        imgfooterback.setBackgroundResource(R.drawable.footerback); 
       } 


      } 
     }); 

更确切地说我只是想找到一个线性布局programmatically.Please帮助的按下状态。

+0

使用OnTouchListener而不是OnClickListener。 – Piyush

回答

1

我有类似你的问题。我自己找到了解决方案。使用onTouchListener()而不是onClickListener()。你必须为布局编写一个选择器,包括按下的状态和默认的状态,然后是soution。只需将您的linearLayout设置为onTouchListener即可。

public OnTouchListener listener = new OnTouchListener() { 

    @Override 
    public boolean onTouch(View view, MotionEvent event) { 

     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      //works like view.isPressed() 
      //view.setPressed(true); 
      linearmain.setVisibility(View.GONE); 
      imgfooterback.setBackgroundResource(R.drawable.discover_h); 
      i =new Intent(FirstPage.this,Featured.class); 
      startActivity(i); 

     } else if (event.getAction() == MotionEvent.ACTION_UP) { 
      view.setPressed(false); 
      Rect rect = new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()); 
      if (rect.contains(view.getLeft() + (int) event.getX(), view.getTop() + (int) event.getY())) { 
       //works like onclick 
       //imgfooterback.setBackgroundResource(R.drawable.footerback); 
       linearmain.setVisibility(View.VISIBLE); 
       imgfooterback.setBackgroundResource(R.drawable.footerback); 
      } 

     } else if (event.getAction() == MotionEvent.ACTION_MOVE) { 
      Rect rect = new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()); 
      if (!rect.contains(view.getLeft() + (int) event.getX(), view.getTop() + (int) event.getY())) { 
       //if you move your finger outside of the view, pressed state ends and returns to default state. 
       //view.setPressed(false); 

      } 
     } 

     return true; 

    } 
};