>

배경 드로어 블이있는 버튼이있는 XML이 있습니다 :

<shape android:shape="rectangle">
            <corners android:bottomRightRadius="20dp"
                android:topLeftRadius="20dp"/>
            <stroke android:width="1dp" android:color="@color/black"/>
 </shape>

프로그래밍 방식으로 버튼 배경색 만 변경하고 싶습니다. 그래서 나는 이것을 시도했다

button.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.red), PorterDuff.Mode.SRC_ATOP);

그러나 ColorFIlter ()를 설정하면 획을 전혀 볼 수 없습니다. 어떤 입력?

  • 답변 # 1

    이것은 귀하의 질문에 가장 적합한 해결책은 아니지만 확실하게 작동합니다

    RippleDrawable rippleImgStart;  
    Drawable imgStart;
     final int ColorWhiteOpacity = Color.argb(75,255,255,255); 
     imgStart = ContextCompat.getDrawable(this, R.drawable.start); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                rippleImgStart = new
                        RippleDrawable(ColorStateList.valueOf(ColorWhiteOpacity), imgStart, null);
                btn.setImageDrawable(rippleImgStart);
    }
    
    

    기본적으로 이미지에 잔물결 효과를 제공하여 잔물결 효과를 얻을 수 있습니다 ..

    색상 불투명도를 사용하여 색상을 이미지로 설정할 수 있습니다.

    여기에서 예제를 찾을 수 있습니다 : link

  • 답변 # 2

    이것이 저에게 효과적이었습니다.

    GradientDrawable buttonBackground = (GradientDrawable)button.getBackground();
    buttonBackground.setColor(color);
    
    

관련 자료

  • 이전 python - 어떻게 이것을 더 빨리 만들 수 있습니까? 아니면 올바른 용어입니까?
  • 다음 html - 호버링 가능한 측면 탐색