如何在按下时突出显示图像按钮

时间:2016-09-17 18:56:38

标签: android highlight android-imagebutton

我想让我的图像按钮高亮一点,就像按下“普通”按钮时的正常发光效果一样。所以我试图把图像放进去,但是图像背面有一个“灰色区域”,所以我把它弄透了,所以只有图像会显示,然后发光效果消失了。这个问题有方法解决吗? :)

请参阅imgur图片作为示例 - Example image here

如果是“硬”,我可以使用图像背后的灰色区域,但是可以将其设为绿色并具有相同的高光效果吗?

我应该将代码放在MainActivity或我的片段java中吗? 片段java

String
这是我的MainActivity
Int

2 个答案:

答案 0 :(得分:1)

将要突出显示的imageView放在具有鲜艳颜色的视图上方,并将视图的可见性设置为等于View.GONE。现在使用你的ImageButton

((ImageButton)findViewById(R.id.myImageBtn)).setOnTouchListener(new OnTouchListener() {

  @Override
    public boolean onTouch(View v, MotionEvent event) {
      switch (event.getAction()) {
      case MotionEvent.ACTION_DOWN: {
          myView.setVisibility(View.VISIBLE);
          break;
      }
      case MotionEvent.ACTION_UP:
          myView.setVisibility(View.GONE);
          break;
          // Your action here on button click

      case MotionEvent.ACTION_CANCEL: {
          myView.setVisibility(View.GONE);
          break;
      }
      }
      return true;
    }
});

答案 1 :(得分:1)

您可以使用用户选择器绘图,并为每个状态提供3个不同的按钮绘图。创建这些文件是drawables文件夹并将此行添加到按钮android:background =" @ drawable / button_selector"

button_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- pressed -->
    <item android:drawable="@drawable/camera_button_hold" android:state_pressed="true"/>
    <!-- focused -->
    <item android:drawable="@drawable/camera_button_hold" android:state_focused="true"/>
    <!-- default -->
    <item android:drawable="@drawable/camera_button_normal"/>
</selector>

camera_button_hold.xml

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
        <solid
            android:color="#673ab7"/>
    </shape>

camera_button_normal.xml

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke
        android:width="2dp"
        android:color="#673ab7"/>
</shape>