Can you try clicking on “4” instead of sending the text to it.
However, you will need to come up with various combination of strategy to handle this scenario as there would be different type of date selector for different android versions.
The Numbers are inside a view, because of that it cannot identify then uniquly. When you are tring to click “4” but passing its container view, appium gets the element and clicks on the center of the element which happens to be the location on 7. Thats why its selecting 7.
In this situation there is no direct way to get this done. The only way i see is get the element by image comparision refer here
Yes Thats what the Sikuli driver will do envetually. However if you are trying to provided it by yourself it will not work for long because the position of the date will change very drastically unless you have some way to calculate it dynamically.