[Desire Themes and Apps] cybermessiah:
Some people have pm me and asked me how to change various colors in the WhatsApp apk. i am quite busy at the moment but will

just offer a few solutions.

Like most other apk/Android apps you will need to edit quite a few xml using a html editor such as Notepad+ [ thought I prefer Scintilla

or Vim as I primarily work on Linux]

You will find most of the apk xmls (after decompiling) in res>values and in res> layout

The xmls in res>values you will primarily be concerned with are those in colors.xml and styles.xml. I wouldnt suggest playing with

ids.xml or public.xml as these contain strings that point more to the inner working of the application rather than the purely visual side.

You can edit the strings.xml if you wish to change the actual text in the apk sub-structure:

For example, say you want to change the "Chats" text in the opening contacts list to "Buddies"... in the strings.xml you would find the

line;

<string name="chats">Chats</string> and change the 'Chats" to 'Buddies' and save.

Any corresponding visual texts within the program can be altered in this manner.

Most likley as a themer, your'e main concern will be with color editing. The two main xmls that concern this are colors.xml and

styles.xml.

Colors.xml is the general controler for colors within the program. It parently specifies colors used by most other xmls within the

styles.xml and various xmls within res>layout (unless otherwise specified by a hex color '#ff......' within the 'child' xml itself)

By altering the colors within the colors.xml, you can directly control the parent colors for various overall elements of the theme.

For instance, in Whatsapp you can locate within the colors.xml:

<color name="black">#ff000000</color> and change the hex color to say #ff20a4f8 (from black to blue).This color can change

much of the black text such as the contact IDs within list views and the text color for the 'select an action' submenu from the default

black to the specified hex color.

Other examples within colors.xml:

<color name="white">#ffffffff</color> This color affects most of the Header Texts colors for 'Chats'/'WhatsApp Contacts'/'Contacts

Help'/'Account Into'

<color name="divider_row_lower">#ffcdcdcd</color> controls the bottom divider border color within most list views

<color name="divider_row_upper">#ffffffff</color> controls the top divider border color within most list views

<color name="conversations_text_gray">#ffd2d0d0</color> Deliniates 'Tap and hold on a chat to delete it ' text at bottom of

contacts list and 'last seen at..' in conversations text color.

Again, the colors within the colors.xml are 'parent' colors that will change the colors of any other xml that points to that specific

string... Changing colors here can have the desired change effects, but may also have undesired effects.

For example, by changing the background color from white to black for all pages via editing the background color in colors.xml... when

going to Settings>More> Account Info, you find that you now have a black background with almost unreadable 'Account Type' dark

text.

This is where you can use the styles.xml to make changes to individual characteristics within the program.

To make such a change, you would first navigate to res>layout. This contains many xmls that contol specific ids,text colors,padding etc

assosciated with different facets of the program itself.

Some xmls here are self expanitory as to what elements they control... some not so obvious. By opening the 'account_info.xml', you

could find all the elements that control aspects of the page layout:

<TextView android:paddingLeft="16.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content"

android:text="@string/account_info_status_title" style="@style/Text.Description" />

After cross-referencing the style.xml, look for the sub-style name that 'Text.Description' points to:

<style name="Text.Description" parent="@style/Text">

<item name="android:textSize">16.0sp</item>

<item name="android:typeface">sans</item>

<item name="android:textStyle">normal</item>

<item name="android:textColor">#ff333333</item>

you can see here that the linked color is #ff333333. .... the Account Type text color is defined here by relevant string in styles.xml.

You could change the hex color in this linked string, but that would change any other text color in the program that also points to that

particular style.

Here is where you can use the style.xml to directly change only one element. Simply copy the original Text.Description sub-style [

everything within </style> and </style>] using your text editor. Then paste the entire sub-style as a new sub-style.Give it a new

name and change the hex color to the new color you want:

<style name="Account.Type.Text.Description" parent="@style/Text">

<item name="android:textSize">16.0sp</item>

<item name="android:typeface">sans</item>

<item name="android:textStyle">normal</item>

<item name="android:textColor">#ff918f8f</item>

Then it is time to use this newly created style to edit the text color in the 'account_info.xml' located earlier in res>layout. This would

be simply achieved by changing:

<TextView android:paddingLeft="16.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content"

android:text="@string/account_info_status_title" style="@style/Text.Description" />

to

<TextView android:paddingLeft="16.0dip" android:layout_width="wrap_content"

android:layout_height="wrap_content" android:text="@string/account_info_status_title"

style="@style/Account.Type.Text.Description" />

The modification now points that particular text to a newly created style and color.

Such creations of new sub-styles within the style.xml can be useful for later edits where you encounter the same visual text

discrepencies. You only need to point to the newly created sub-style to once again achieve the same desired effect.

Some xmls within res>layout also contain only hex colors that you can alter to change visual text appearances within the elements

controled by that particular xml.

For examle. Say you want to change the text field colors for the participant/recipient conversation and date texts within the

conversation bubbles on the conversation page.

In res>layout, navigate to 'conversation_text_row_left.xml' and 'conversation_text_row_right.xml' and alter the direct hex colors

contained within... the first controlling group id name, the second controlling the conversation text itself and the last changing the color

of the date text.

As a hint to gather an idea of what element a particular string effects/controls, you can look at the '@id' to get a good idea of that.

Some other app elements are also controlled by xmls that are not located within the res>layout folder, but rather, are contained

within the 'drawable-hdpi' folder. For example, say you want to change the contacts listview row colors.. effectively changing the

entire color of the opening page, perhaps to an inverse of the original.

The specific xmls [located within res>drawable-hdpi] would be:

selector_orange_gradient_on_beige.xml

selector_orange_gradient_on_gray.xml

selector_transparent_gray.xml

The specific hex colors here that you would change would be #fff6f6f6 and #ffe5e5e5. Simply re-edit those hex colors to a the hex

colors that you wish the listview row colors to be. ..If I wanted to have a completly black looking Whatsapp, I would change those the

hex value of those colors to #ff000000.

Similarily, you can alter other fields with these 'gradient' xmls to alter the pressed gradient color displayed when physically touching the

listview rows.

In the ways described above, you can pretty well mod any aspect of any Android application you want... it doesnt necessarily have to

be WhatsApp. Then simply recompile/build using the Android compiling tool of your choice.

Perhaps this can proove helpfull to those not only modding WhatsApp, but other Android applications as well.

Cheers.;)