2012-12-19 2 views
7

Próbuję zmienić kolor tła FramyLayout. Kolor się zmienia, ale jest zły.Android. Zmień kolor tła FrameLayout z kodu

Jednak działa dobrze, jeśli robię to za pośrednictwem XML.

Oto mój kod res/wartości/colors.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="grey">#888888</color> 
    <color name="white">#FFFFFF</color> 
    <color name="red">#ffff3448</color> 
    <color name="green">#ff408c3a</color> 
</resources> 

Oto jak to wygląda, jeśli wprowadzę zmiany w XML Colors changed correctly

A to, co się dzieje, gdy próbuję to zrobić z kodem

FrameLayout frameLayoutBalance = (FrameLayout)view.findViewById(R.id.frameLayoutBalance); 
frameLayoutBalance.setBackgroundColor(R.color.green); 

Colors changed incorrectly

+0

Spójrz na ten wpis http://stackoverflow.com/questions/2895367/change-background-color-of-the-layout-in-android –

Odpowiedz

9

Nie powinieneś używać frameLayoutBalance.setBackgroundColor (R.color.green);

setBackgroundColor wymagał koloru (tj. Jego wartości opisanej przez Chirag Raval), a nie zasobów koloru.

użyj tej ramkiLayoutBalance.setBackgroundColor (getResources(). GetColor (R.color.green));

3

Użyj tego kodu frameLayoutBalance.setBackgroundColor (Color.parseColor ("# 00aacc"));

+1

Cześć! Wielkie dzięki za szybką odpowiedź. Mimo że Twój kod działa i można go użyć jako obejścia problemu, obawiam się, że nie można go użyć jako rozwiązania. Zawsze jest najlepszą praktyką, aby nie zagłuszać żadnych wartości, tak jakby się zmieniły. Będę musiał przejść przez cały kod i zmienić go ręcznie wszędzie. –

+3

frameLayoutBalance.setBackgroundColor (getResources(). GetColor (R.color.red)); – User

+0

dziękuję Madhavi. zadziałało –