【问题标题】:How do I affect another view's property when ImageView is pressed?按下 ImageView 时如何影响另一个视图的属性?
【发布时间】:2014-04-07 07:56:13
【问题描述】:

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

我知道当状态通过可绘制对象发生变化时我可以换出 ImageView 图像,但我似乎找不到影响布局中另一个视图的理想方法,而 isPressed 在这个特定的图像视图上为真。

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

想法?

【问题讨论】:

    标签: java android android-imageview


    【解决方案1】:

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

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

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

    希望我能帮上忙……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      相关资源
      最近更新 更多