2013-04-15 2 views
0

xml에 흰색 배경이 정의 된 drawable 타원이 있습니다. 이 원을 내 gridAdapter 내 textView의 배경 리소스로 설정하고 있습니다.textview 배경에 사용되는 도형의 색을 변경하려고합니다.

드로어 블 서클의 색상을 코드별로 변경하고 싶습니다. 운이별로 없습니다. 나는 .setColor, .setColorFilter 및 기타 다양한 해킹을 사용했지만 아무도 작동하지 않았습니다. 동그라미가 textView의 배경에로드되고 흰색으로 변경되면 결코 바뀌지 않는 것 같습니다.

여기에 내가 드로어 블을로드하고 색상을 수정 한 다음 textView에 배경 리소스로 추가하려고 :

  int color = Color.parseColor(locationModel.col_line_color); // Color of the line 

      GradientDrawable bgcircle = (GradientDrawable) gridContext.getResources().getDrawable(R.drawable.circle); 
      bgcircle.mutate(); 
//   bgcircle.setColor(color); 

      bgcircle.setColorFilter(color, Mode.SRC_ATOP); 

      viewHolder.textView.setText((locationModel.col_line).toString()); 
      viewHolder.textView.setBackgroundResource(R.drawable.circle); 

드로어 블 형태의 XML :

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 

    <solid 
     android:color="@android:color/white"/> 

    <size 
     android:width="120dp" 
     android:height="120dp"/> 

</shape> 

자습서의 많은 을 호출 .setColorFilter()을 구현하지만, 나는별로 행운이 없었어요. PorterDuff 모드를 몇 가지 대안으로 변경해 보았지만 서클은 흰색 렌더링을 계속합니다.

도움이되거나 도움이 될만한 정보가 있습니다.

+1

런타임에는 xml 리소스를 수정하려고하는데 – Raghunandan

+0

그럼 코드에서 드로어 블을 생성해야합니다. – markbratanov

+0

드로어 블을 코드에서 배경으로 설정할 수 있습니다. 하지만 수정할 수 없습니다 – Raghunandan

답변

2

현재 xml 드로어 블을 수정하는 대신에 코드에 드로어 블을 만듭니다. 그라데이션이 필요 없다면 ShapeDrawable을 사용할 수도 있습니다.

ShapeDrawable drawable = new ShapeDrawable(new OvalShape()); 
drawable.getPaint().setColor(newColor); 
+0

고맙습니다. 나는 이것을 끝내고 drawable을 배경 자원으로 전달했다. 그러나 나는'setBackgroundDrawable'에 대해 "deprecated"경고를 받고있다.'setBackground'를 사용하는 것이 더 좋은가? – markbratanov

+0

비 deprecated 메소드를 사용하는 것이 항상 좋습니다. – stinepike

관련 문제