在android中,我使用的是默认的CalendarView.我将背景设置为浅灰色.但我可以更改日历视图的月视图的颜色吗?
Rya*_*yan 12
正如您所知,TextView是私有的,似乎没有任何方法可以访问它.
虽然我不推荐它,但您可以使用java.lang.reflect包完成此操作:
try
{
CalendarView cv = (CalendarView) this.findViewById(R.id.calendarView1);
Class<?> cvClass = cv.getClass();
Field field = cvClass.getDeclaredField("mMonthName");
field.setAccessible(true);
try
{
TextView tv = (TextView) field.get(cv);
tv.setTextColor(Color.RED);
}
catch (IllegalArgumentException e)
{
e.printStackTrace();
}
catch (IllegalAccessException e)
{
e.printStackTrace();
}
}
catch (NoSuchFieldException e)
{
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
在Android 5.x上我使用了以下解决方案(它也适用于旧版本):
CalendarView cv = (CalendarView) this.findViewById(R.id.calendarView1);
ViewGroup vg = (ViewGroup) cv.getChildAt(0);
View child = vg.getChildAt(0);
if(child instanceof TextView) {
((TextView)child).setTextColor(getResources().getColor(R.color.black));
}
Run Code Online (Sandbox Code Playgroud)
可以在此处找到calendarview的布局,并根据月份名称TextView是布局中的第一个子项.
| 归档时间: |
|
| 查看次数: |
6180 次 |
| 最近记录: |