2017-01-22 11 views
-1

런타임 중에 어플리케이션의 색상을 변경해야합니다. 나는 색상을 얻기 위해 데이터를 파일을 구문 분석하고 내가 정적 필드와 메소드와 클래스에 저장 : 나는 화면의 배경을 변경하고자 할 때, 예를 들어,드로어 블 xml 파일의 색상을 프로그래밍 방식으로 변경

public class Colors { 

    private static String colorOneBackground = "#00577F"; 
    private static String colorOneForeground = "#FFFFFF"; 

    public static void setColorOneBackground(String colorOneBackground) { 
     Colors.colorOneBackground = colorOneBackground; 
    } 

    public static int getColorOneForeground() { 
     return Color.parseColor(colorOneForeground); 
    } 
    // more colors... 

그 때 나는 그렇게 할 :

RelativeLayout relativeLayout = (RelativeLayout) myView.findViewById(R.id.loginBackground); 
     relativeLayout.setBackgroundColor(Colors.getColorOneBackground()); 

텍스트 뷰 및 기타 위젯과 동일합니다. 그러나 한 가지 문제가 발생했습니다. 일부 스타일은 예를 들어, mybutton.xml, 그리기 폴더에 정의되어 있습니다

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android=" http://schemas.android.com/apk/res/android " 
    android:shape="rectangle"> 
    <gradient 
     android:startColor="#FFFFFF" 
     android:centerColor="#FFFFFF" 
     android:endColor="#FFFFFF" 
     android:angle="270" /> 
    <corners android:radius="5dp" /> 
    <stroke android:width="3px" android:color="#000000" /> 
</shape> 

그리고 내 버튼의 배경으로이 설정 : 내가 프로그래밍 방식으로이 색상 값을 변경하려면 말했듯이

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/title" 
    android:background="@drawable/mybutton" /> 

. 그래서 dinamically xml 파일에 정의 된 색상 값을 변경할 수 있는지 알고 싶습니까?

+0

사용 ** setBackGroundRes() ** 방법. –

+0

제 질문을 다시 한 번 읽어보십시오. xml 파일의 색상 값을 변경하고 코드에서 drawable 배경을 설정하는 방법을 알고 싶습니다. –

+0

http://stackoverflow.com/questions/17823451/set-android-shape-color-programmatically – amorenew

답변

2

이 시도 : 당신의 당김 XML 파일의 색상을 변경 :

button.setBackgroundResource(R.drawable.mybutton); //drawable id 
GradientDrawable gd = (GradientDrawable) button.getBackground().getCurrent(); 
gd.setColor(Color.parseColor("#000000")); //set color 
gd.setStroke(2, Color.parseColor("#00FFFF"), 5, 6); 
+0

나는 마침내 혼자서 문제를 해결할 수 있었다. 어쨌든 도움을 주셔서 감사합니다;) –

+0

답변 게시보다 – Merian