setBackground vs setBackgroundDrawable (Android) 사용할 때 API 레벨 16setBackground 에

뷰의 배경 드로어 블을 설정하고 싶습니다. 이이 두 가지 방법은 (내가 볼까지로)입니다 : setBackgroundsetBackgroundDrawable.

을 사용할 때 API 레벨 16setBackground 에 추가 되었지만 프로젝트의 최소 SDK 버전은 7이라고 말합니다. 16 미만의 아무것도 작동하지 않는다고 가정합니다. 그러나 setBackgroundDrawable을 사용하면 더 이상 사용되지 않습니다.

무엇을 사용해야합니까?



답변

더 이상 사용되지 않지만 여전히 작동하므로 사용할 수 있습니다. 그러나 당신이 완전하게 정확하기를 원한다면, 그 완전성을 위해 … 다음과 같은 것을 할 것입니다 :

int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    setBackgroundDrawable();
} else {
    setBackground();
}

이것이 작동하려면 buildTarget api 16 및 min build를 7 또는 이와 유사한 것으로 설정해야합니다.


답변

setBackgroundResource()API 레벨 1에있는 대신 사용할 수 있습니다 .


답변

소스 코드 ( 이 게시물에 대한 신용) 에 표시된 것처럼 현재 두 기능 사이에 차이가없는 것 같습니다 .

public void setBackground(Drawable background) {
    //noinspection deprecation
    setBackgroundDrawable(background);
}

@Deprecated
public void setBackgroundDrawable(Drawable background) { ... }

fill-parent vs match-parent와 비슷한 이름 결정입니다.


답변

나는 이것이 오래된 질문이라는 것을 알고 있지만 비슷한 상황이 있으며 내 해결책은

button.setBackgroundResource( R.drawable.ic_button );
Drawable d = button.getBackground();

그런 다음 “Drawable”을 사용하여 컬러 필터를 적용 할 수 있습니다.


답변

사용하다 ViewCompat.setBackground(view, background);


답변

setBackgroundResource()대신 사용할 수 있습니다.relativeLayout.setBackgroundResource(R.drawable.back);

이것은 나를 위해 작동합니다.


답변

이제 이러한 옵션 중 하나를 사용할 수 있습니다. 그리고 어떤 경우에도 작동합니다. 색상은 다음 과 같이 16 진수 코드 가 될 수 있습니다 .

myView.setBackgroundResource(ContextCompat.getColor(context, Color.parseColor("#FFFFFF")));

다음 과 같은 색상 리소스 :

myView.setBackgroundResource(ContextCompat.getColor(context,R.color.blue_background));

또는 다음 과 같이 사용자 정의 xml 자원

myView.setBackgroundResource(R.drawable.my_custom_background);

그것이 도움이되기를 바랍니다!