Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android HoneyComb DatePicker Text Color

I'm searching for a possibilitie to adjust the text color of the datepicker widget in an android honeycomb app. I knew that the widget inherent the global text-color which is white in my case, but i need a black text-color for the datepicker as the background here is light grey.

Anyone know how to fix this?

like image 209
Smillie Avatar asked Jan 12 '12 15:01

Smillie


2 Answers

DONE IT

Did it in a Theme in the application styles.xml (basically set a style on all EditText fields)

I have this in /values-v11/ so it only affects >HC

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

    <style name="Theme.SelectDate" parent="@android:style/Theme.Holo.NoActionBar">
        <item name="android:editTextStyle">@style/Widget.EditText.Black</item>
    </style>

    <style name="Widget.EditText.Black" parent="@android:style/Widget.EditText">
        <item name="android:textColor">@color/black</item>
    </style>

</resources>

Then in my AndroidManifest, for the Activity that uses the DatePicker:

      <activity
            android:name=".ui.phone.SelectDateActivity"
            android:label="Date Selection"
            android:screenOrientation="portrait"
            android:theme="@style/Theme.SelectDate" />

That's it!


My Working Out:

I came to this conclusion by checking the DatePicker source:

https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/date_picker.xml

That showed me the DatePicker used NumberPicker

https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/number_picker.xml https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/number_picker_with_selector_wheel.xml

The NumberPicker uses an EditText

You can therefore style an EditText

android : how to change the style of edit text?

And if you search in this file for "editText" you will see you can set a style on all edittext fields in one Activity!

https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/themes.xml

You override this item:

 <item name="editTextStyle">@android:style/Widget.EditText</item>
like image 189
Blundell Avatar answered Sep 30 '22 10:09

Blundell


I have found this solution: debugging DatePicker object, I get the object jerarqy. Maybe it's not an elegant solution but it works:

    private void setNumberPickerProperties(DatePicker dp)
{
        LinearLayout l = (LinearLayout)dp.getChildAt(0);
        if(l!=null)
        {
                l = (LinearLayout)l.getChildAt(0);
                if(l!=null)
                {
                        for(int i=0;i<3;i++)
                        {
                                NumberPicker np = (NumberPicker)l.getChildAt(i);
                                if(np!=null)
                                {
                                        EditText et = (EditText)np.getChildAt(1);
                                        et.setTextColor(Color.BLACK);
                                }
                        }
                }
        }
}
like image 36
roger Avatar answered Sep 30 '22 10:09

roger