按下ImageView时如何影响其他视图的属性?

时间:2014-04-06 22:52:23

标签: java android android-imageview

我在LinearLayout视图中有一个ImageView。我想在按下ImageView时更改LinearLayout视图的颜色。

我知道当状态通过drawable变化时我可以换掉ImageView图像,但是在这个特定的图像视图中isPressed为true时,我似乎无法找到影响布局中另一个视图的理想方法。

最终,我正在尝试创建一个底部的ActionBar并模拟常规的ActionBar高亮框(也就是说,当你按下ActionBar中的菜单项时,你会得到高亮框)。现在我的ImageView是一个LinearLayout,顶部和底部有一个小的(8dp)填充。我可以将ImageView中的图像替换为具有50%白色背景的图像,但如果我想保持图像设备密度独立,我就无法这样做。相反,我希望按钮存在的方形布局,我将根据需要更改颜色。

想法?

1 个答案:

答案 0 :(得分:0)

“我在LinearLayout视图中有一个ImageView。我想在按下ImageView时更改LinearLayout视图的颜色。”

为此: 您将XML中的ImageView定义为可点击android:clickable="true" 您在Activity onCreat()中影响OnClickListener到此ImageView:

ImageView yourImage = (ImageView) findViewById(R.id.your_image);
yourImage.setClickable(true); // if you want to define it here
yourImage.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                findViewById(R.id.your_linear_layout).setBackgroundColor(your_color);
            }
        });

否则,如果您只想在单击时更改颜色并在单击后恢复旧颜色,则可以实现OnTouchListener:

yourImage.setOnTouchListener(new OnTouchListener() {

    public boolean onTouch(final View v, MotionEvent event) {
        int action = event.getAction() & MotionEvent.ACTION_MASK;

        if (action == MotionEvent.ACTION_DOWN) { 
            // when the click begins
            findViewById(R.id.your_linear_layout).setBackgroundColor(your_click_color);
            return true;
        } else {
           // when the click finishs
           findViewById(R.id.your_linear_layout).setBackgroundColor(your_init_color);
          return true;
        }

        return false;
    }

});  

我希望我能帮助......