Android 如何找到线性布局的压缩状态?

Android 如何找到线性布局的压缩状态?,android,android-linearlayout,Android,Android Linearlayout,这是一个场景。我有一个带有文本视图和图像视图的线性布局。现在我想在线性布局的按下状态下更改另一个图像视图的背景。我使用的方法是isPressed。但是当我按下线性布局后离开线性布局时,按下状态的更改仍然存在 这是我的密码 lin_featured.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {

这是一个场景。我有一个带有文本视图和图像视图的线性布局。现在我想在线性布局的按下状态下更改另一个图像视图的背景。我使用的方法是isPressed。但是当我按下线性布局后离开线性布局时,按下状态的更改仍然存在

这是我的密码

  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);
                }


            }
        });

更准确地说,我只是想通过编程找到线性布局的按下状态。请帮助。

我也遇到过类似的问题。我自己找到了解决办法。使用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;

    }
};

使用OnTouchListener而不是OnClickListener。