我在LinearLayout视图中有一个ImageView。我想在按下ImageView时更改LinearLayout视图的颜色。
我知道当状态通过drawable变化时我可以换掉ImageView图像,但是在这个特定的图像视图中isPressed为true时,我似乎无法找到影响布局中另一个视图的理想方法。
最终,我正在尝试创建一个底部的ActionBar并模拟常规的ActionBar高亮框(也就是说,当你按下ActionBar中的菜单项时,你会得到高亮框)。现在我的ImageView是一个LinearLayout,顶部和底部有一个小的(8dp)填充。我可以将ImageView中的图像替换为具有50%白色背景的图像,但如果我想保持图像设备密度独立,我就无法这样做。相反,我希望按钮存在的方形布局,我将根据需要更改颜色。
想法?
答案 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;
}
});
我希望我能帮助......