호출 집합 CompoundDrawables()에 CompoundDrawables()가 표시되지 않습니다.
메소드를 호출하면 Drawable 화합물이 표시되지 않습니다.
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
무슨 생각 있어요?
나는 사용할 필요가 있었습니다.
이를 사용합니다(테스트했습니다.효과가 좋습니다.
Drawable image = context.getResources().getDrawable( R.drawable.ic_action );
int h = image.getIntrinsicHeight();
int w = image.getIntrinsicWidth();
image.setBounds( 0, 0, w, h );
button.setCompoundDrawables( image, null, null, null );
이미지가 지정된 경계가 없으므로 비어 있습니다.사용하셔도 좋습니다setCompoundDrawables()
이미지의 경계를 지정하기 전에Drawable.setBounds()
방법
상단으로 설정된 예제:
view.setCompoundDrawablesWithIntrinsicBounds(
null,
getResources().getDrawable(R.drawable.some_img),
null,
null
);
인수 순서: (왼쪽, 위쪽, 오른쪽, 아래)
다시 한 번 더 간단해졌습니다.
Drawable image = context.getResources().getDrawable(R.drawable.ic_action );
image.setBounds( 0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight() );
button.setCompoundDrawables( image, null, null, null );
한계를 지정하지 않았기 때문에 이미지가 표시되지 않으므로 여기에는 두 가지 옵션이 있습니다.
1차 방법
사용하다setCompoundDrawablesWithIntrinsicBounds
아래와 같이 방법
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn. setCompoundDrawablesWithIntrinsicBounds(myDrawable, null, null, null);
세컨드 메소드
아래와 같이 TextView에 적용하기 전에 그리기 가능한 범위를 적용할 수 있습니다.
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
myDrawable.setBounds( 0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight());
btn.setCompoundDrawables(myDrawable, null, null, null);
바로 그겁니다.
API 22에서 더 이상 사용하지 않습니다.
이 코드는 제게 유용합니다.
Drawable drawable = ResourcesCompat.getDrawable(getResources(),R.drawable.wen, null);
drawable.setBounds(0, 0, drawable.getMinimumWidth(),
drawable.getMinimumHeight());
tv.setCompoundDrawables(drawable, null, null, null);
코틀린에서:
1) 세트drawable
:
val drawable = ContextCompat.getDrawable(context!!,R.drawable.ic_image)?.apply {
setBounds(0, 0, intrinsicWidth, intrinsicHeight)
}
아니면
val drawable = ResourcesCompat.getDrawable(resources, R.drawable.ic_image, null)?.apply {
setBounds(0, 0, minimumWidth, minimumHeight)
}
2) 세트TextView
:
textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
아니면
button.setCompoundDrawables(null, drawable, null, null)
세트용복합도면고유 경계(Drawable, Drawable, Drawable, Drawable)를 사용하면 작동하지 않습니다.
set CompoundDrawables를 사용해야 했습니다.IntrinsicBounds(0, 0, 0, 0)를 사용합니다.
Kotlin의 예:
val myView = layoutInflater.inflate(R.layout.my_view, null) as TextView
myView.setCompoundDrawablesWithIntrinsicBounds(0, myDrawable, 0, 0)
데이터 바인딩이 있는 Kotlin에서
binding.tvTime.setCompoundDrawablesWithIntrinsicBounds(
ResourcesCompat.getDrawable(resources, android.R.drawable.ic_menu_recent_history, null),
null,null,null)
어디에tvTime
가textView
및 위치(Rigth,Top,Left,Bottom)
, 바인딩에 대한 자세한 내용은 https://stackoverflow.com/a/72360048/12272687 을 참조하십시오.
언급URL : https://stackoverflow.com/questions/6590838/calling-setcompounddrawables-doesnt-display-the-compound-drawable
'IT' 카테고리의 다른 글
워드프레스에서 크로스 오리진 프레임에 접근할 때 오리진이 있는 차단된 프레임을 해결하는 방법? (0) | 2023.10.05 |
---|---|
COUNT(*)는 항상 결과를 반환합니까? (0) | 2023.10.05 |
CSS는 텍스트와 다른 색을 사용합니까? (0) | 2023.10.05 |
특정 페이지 템플릿에 add_filter를 사용하려면 어떻게 해야 합니까? (0) | 2023.10.05 |
MySql 타임스탬프 열을 PHP의 현재 타임스탬프로 업데이트하는 방법은 무엇입니까? (0) | 2023.09.25 |