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