예를 들어 다음 selector xml
과 같습니다.
view_round_corner_with_border.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners
android:bottomRightRadius="7dp"
android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp"/>
<stroke
android:color="@color/black"
android:width="1dp"/>
<solid
android:color="@color/primary_color"/>
</shape>
위의 selector
배경색을 primary_color 로 정의했습니다 . 이제 내가하고 싶은 것은 다른 색상의 배경을 가진 여러 EditText 및 TextView에 둥근 모서리를 만드는이 선택기를 적용 해야하는 것 입니다. 하지만 문제는 위의 선택기를 사용하면 배경을 primary_color 로만 만들고 다른 배경색을 원한다는 것입니다.
다음과 같이 동적으로 색상을 변경하면
editText.setBackgroundResource(R.color.anyColor);
그러면 선택기 상태가 영향을 받고 editText 가 둥근 모서리 가장자리로 유지되지 않습니다.
지금까지 내가 한 일은 다른 색상으로 여러 선택기를 만들고 여러 EditText 및 TextView 에 대한 논리에 따라 사용하는 것 입니다.
따라서 여러 EditText 및 TextView 에 사용할 수있는 단일 선택기를 사용하여 둥근 모서리에 영향을주지 않고 배경색을 동적으로 변경할 수있는 방법이 있습니다.
이런 식으로 시도해 볼 수 있습니다.
Drawable background = textView.getBackground();
if (background instanceof ShapeDrawable) {
((ShapeDrawable)background).getPaint().
setColor(getResources().getColor(R.color.anycolor));
} else if (background instanceof GradientDrawable) {
((GradientDrawable)background).
setColor(getResources().getColor(R.color.anycolor));
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다