>

이미지를 버튼 backgroud로 설정했지만 클릭하면 버튼이 강조 표시되지 않습니다. 그것을 해결할 방법이 있습니까?

  • 답변 # 1

    올바른 리소스를 얻으려면 StateList Drawable의 문서가 있습니다. 당신은 당신의 res/drawable 에서 그것을 만들고 정의합니다.  하위 디렉토리를 지정하고 버튼 배경으로 설정하십시오.

  • 답변 # 2

    이것이 ImageButton이고 각 프레스/압축되지 않은 상태에 대해 여러 드로어 블을 사용하지 않으려면 이미지의 컬러 필터 속성을 사용할 수 있습니다. 이 솔루션은 Omar가 사용하는 솔루션과 유사합니다.

    터치시 컬러 필터를 수정하는 OnTouchListener를 만듭니다.

    public class ButtonHighlighterOnTouchListener implements OnTouchListener {
      final ImageButton imageButton;
      public ButtonHighlighterOnTouchListener(final ImageButton imageButton) {
        super();
        this.imageButton = imageButton;
      }
      public boolean onTouch(final View view, final MotionEvent motionEvent) {
        if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
          //grey color filter, you can change the color as you like
          imageButton.setColorFilter(Color.argb(155, 185, 185, 185));
        } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
          imageButton.setColorFilter(Color.argb(0, 185, 185, 185)); 
        }
        return false;
      }
    }
    
    

    이 리스너를 버튼에 할당하십시오 :

     myButton = (ImageButton) findViewById(R.id.myButton);
      myButton.setOnTouchListener(new ButtonHighlighterOnTouchListener(myButton));
    
    

    업데이트

    복합 드로어 블을 통해 ImageView, ImageButton 또는 TextView에 형광펜을 적용하는 클래스가 개선되었습니다.

    public class ButtonHighlighterOnTouchListener implements OnTouchListener {
      private static final int TRANSPARENT_GREY = Color.argb(0, 185, 185, 185);
      private static final int FILTERED_GREY = Color.argb(155, 185, 185, 185);
      ImageView imageView;
      TextView textView;
      public ButtonHighlighterOnTouchListener(final ImageView imageView) {
        super();
        this.imageView = imageView;
      }
      public ButtonHighlighterOnTouchListener(final TextView textView) {
        super();
        this.textView = textView;
      }
      public boolean onTouch(final View view, final MotionEvent motionEvent) {
        if (imageView != null) {
          if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
            imageView.setColorFilter(FILTERED_GREY);
          } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
            imageView.setColorFilter(TRANSPARENT_GREY); // or null
          }
        } else {
          for (final Drawable compoundDrawable : textView.getCompoundDrawables()) {
            if (compoundDrawable != null) {
              if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                // we use PorterDuff.Mode. SRC_ATOP as our filter color is already transparent
                // we should have use PorterDuff.Mode.LIGHTEN with a non transparent color
                compoundDrawable.setColorFilter(FILTERED_GREY, PorterDuff.Mode.SRC_ATOP);
              } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
                compoundDrawable.setColorFilter(TRANSPARENT_GREY, PorterDuff.Mode.SRC_ATOP); // or null
              }
            }
          }
        }
        return false;
      }
    }
    
    

  • 답변 # 3

    여기를 참조하십시오

    그리고 여기도 Romain Guy의 답변 :

    와이즈 비즈

    In res/drawable, create a file called for instance mybutton_background.xml and put something like this inside:

    그런 다음이 드로어 블을 버튼의 배경으로 설정하십시오.     와이즈 비즈  

  • 답변 # 4

    사용중인 경우

    <?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_focused="true" android:state_pressed="false" 
            android:drawable="@drawable/button_background_focus" /> 
        <item android:state_focused="true" android:state_pressed="true" 
            android:drawable="@drawable/button_background_pressed" /> 
        <item android:state_focused="false" android:state_pressed="true" 
            android:drawable="@drawable/button_background_pressed" /> 
        <item android:drawable="@drawable/button_background_normal" /> 
    </selector>
    
    

    그러면 새로운 XML을 새로 선언하는 것이 좋습니다. 이미지를 사용하면 각 이벤트 상태에 대한 이미지를 지정할 수 있습니다. Octavian이 말한 것처럼
    배경으로이 XML을 설정할 수 있습니다

    xml이 'res/drawable/abc.xml'인 경우 배경을 다음으로 설정

    android:background="@drawable/mybutton_background"
    
    

    ImageButton을 사용할 수도 있습니다

    <Button 
      ------------------
    android:background="@drawable/youimage"
    >
    
    

    ImageButton의 장점은 하이라이트를 위해 다른 이미지가 필요하지 않다는 것입니다.

  • 답변 # 5

    이미지 사본을 여러 개 만들 필요없이 가난한 사람의 하이라이트 효과를 얻으려면이 방법을 사용하십시오. 알파 값 0.8을 원하는 값으로 설정하십시오 :

    android:background="@drawable/abc"
    
    

    <ImageButton ---------------------- android:src="@drawable/youimage" />

  • 이전 javascript - 여러 문자열을 replace () 메서드로 바꾸는 방법은 무엇입니까?
  • 다음 graphics - 현재 플롯 창 크기를 변경하는 방법 (R)